Laravel-admin 中引入 Ace 代码编辑器

Ace作为远程代码编辑器也是非常友好的。Ace中提供各种语言的模板,主要在初始化Ace中配置使用的语言模式即可。

先下载前端库文件AceEditor,解压到目录public/vendor/AceEditor。(这个目录可以随便放看个人喜好)

然后新建组件类app/Admin/Extensions/AceEditor.php。

<?php

namespace App\Admin\Extensions;

use Encore\Admin\Form\Field;

class AceEditor extends Field
{
    protected $view = 'admin.ace-editor';

    protected static $js = [
//        'https://cdnjs.cloudflare.com/ajax/libs/ace/1.3.0/ace.js'
       '/vendor/ace/ace.js',
    ];

    public function render()
    {
        $this->script = <<<EOT

        var editor = ace.edit("{$this->id}");
        editor.setOption("minLines", 5);
        editor.setOption("maxLines", 20);
        editor.setFontSize(16);
        editor.setOption("wrap", "free");
        editor.setTheme("ace/theme/chrome");
        editor.session.setMode("ace/mode/javascript");
        editor.getSession().on('change', function(e) {
            document.getElementById('ace-input-{$this->id}').value = editor.getValue();

        });

EOT;

        return parent::render();

    }
}

新建视图文件resources/views/admin/ace-editor.blade.php:

<div class="form-group {!! !$errors->has($label) ?: 'has-error' !!}" >

    <label for="{{$id}}" class="col-sm-2 control-label">{{$label}}</label>

    <div class="{{$viewClass['field']}}">

        @include('admin::form.error')

        <div id="{{$id}}" style="width: 100%; height: 100%;">
            <p>{!! old($column, $value) !!}</p>
        </div>

        <input type="hidden" name="{{$name}}" value="{{ old($column, $value) }}" />

    </div>
</div>

然后注册进laravel-admin,在app/Admin/bootstrap.php中添加以下代码:

use App\Admin\Extensions\AceEditor;
use Encore\Admin\Form;
Form::extend('ace', AceEditor::class);

调用的时候直接直接使用:

$form->editor('body');

引入的css js文件 : https://download.csdn.net/download/chen529... 测试没有问题的
实例:
file

本作品采用《CC 协议》,转载必须注明作者和本文链接
chenBJ
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2
chenBJ

document.getElementById('ace-input-{$this->id}').value = editor.getValue(); 这块有问题,在解决

5年前 评论

你好,我使用的是基于laravel 5.5创建的项目,请问怎么在view中使用ace editor 呢?

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!