Расширяет Textarea
- имеет те же функции
Создание
TinyMce - один из самых популярных веб-редакторов. Для его использования в админ-панели MoonShine есть одноименное поле.
Перед использованием этого поля вы должны зарегистрироваться на сайте Tiny.Cloud, получить токен и добавить его в конфигурацию config/moonshine.php
.
'tinymce' => [ 'token' => 'ВАШ_ТОКЕН']
use MoonShine\Fields\TinyMce; //... public function fields(): array{ return [ TinyMce::make('Описание') ];} //...
Конфигурация
Язык
locale(string $locale)
Плагины
plugins(string|array $plugins)
addPlugins(string|array $plugins)
removePlugins(string|array $plugins)
Меню
menubar(string $menubar)
Панель инструментов
toolbar(string $toolbar)
addToolbar(string $toolbar)
Опции
addConfig(string $name, mixed $value)
Комментарии Tiny
commentAuthor(string $commentAuthor)
Теги
mergeTags(array $mergeTags)
use MoonShine\Fields\TinyMce; //... public function fields(): array{ return [ TinyMce::make('Описание') // Переопределение набора плагинов ->plugins('anchor autoresize') // Добавление плагинов к базовому набору ->addPlugins('code codesample') // Удаление плагинов из базового набора ->removePlugins('autoresize') // Переопределение набора панели инструментов ->toolbar('undo redo | blocks fontfamily fontsize') // Добавление панели инструментов к базовому набору ->addToolbar('code codesample') // Изменение имени автора для плагина tinycomments ->commentAuthor('Данил Шутский') // Теги ->mergeTags([ ['value' => 'tag', 'title' => 'Заголовок'] ]) // Добавление конфигурации ->addConfig('codesample_languages', [['text' => 'HTML/XML', 'value' => 'markup']]) ->addConfig('force_br_newlines', true) // Переопределение текущей локали ->locale('ru'), ];} //...
Файлы переводов находятся в директории public/vendor/moonshine/libs/tinymce/langs
.
Дополнительные настройки
Метод addConfig()
позволяет выполнить расширенную настройку TinyMce.
addConfig(string $name, bool|int|float|string $value);
use MoonShine\Fields\TinyMce; //... public function fields(): array{ return [ TinyMce::make('Описание') ->addConfig('extended_valid_elements', 'script[src|async|defer|type|charset]') ];} //...
Файловый менеджер
Если вы хотите использовать файловый менеджер в TinyMce, то вам нужно установить пакет Laravel FileManager
Установка
composer require unisharp/laravel-filemanager php artisan vendor:publish --tag=lfm_configphp artisan vendor:publish --tag=lfm_public
Обязательно установите флаг 'use_package_routes' в конфигурации lfm в значение false, иначе кэширование маршрутов вызовет ошибку.
return [ // ... 'use_package_routes' => false, // ...];
Файл маршрутов
Создайте файл маршрутов, например routes/moonshine.php
, и зарегистрируйте маршруты LaravelFilemanager.
use Illuminate\Support\Facades\Route;use UniSharp\LaravelFilemanager\Lfm; Route::prefix('laravel-filemanager')->group(function () { Lfm::routes();});
Регистрация файла
Зарегистрируйте созданный файл маршрутов в app/Providers/RouteServiceProvider.php
.
Файл маршрутов должен быть в группе middleware moonshine
!
// ... public function boot(){ // ... $this->routes(function () { // ... Route::middleware('moonshine') ->namespace($this->namespace) ->group(base_path('routes/moonshine.php')); });} // ...
Чтобы разрешить доступ только авторизованным в админ-панели пользователям, необходимо добавить middleware MoonShine\Http\Middleware\Authenticate
.
use MoonShine\Http\Middleware\Authenticate; // ... public function boot(){ // ... $this->routes(function () { // ... Route::middleware(['moonshine', Authenticate::class]) ->namespace($this->namespace) ->group(base_path('routes/moonshine.php')); });}// ...
Конфигурация
Необходимо добавить префикс в конфигурационный файл config/moonshine.php
.
'tinymce' => [ 'file_manager' => 'laravel-filemanager',]