Как создать настраиваемое поле с поддержкой CodeMirror в Laravel Orchid и почему в макете не работает JavaScript?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как создать настраиваемое поле с поддержкой CodeMirror в Laravel Orchid и почему в макете не работает JavaScript?

Сообщение Anonymous »


У меня вопрос о том, как создать собственное поле в Laravel (Orchid) с поддержкой библиотеки CodeMirror. Я ознакомился с документацией и одним видео по этой теме и выполнил следующие шаги:
[*]Написал файл Dashboard.js. [*]Интегрировал этот файл в проект с помощью Vite. [*]Создал собственный контроллер JavaScript. [*]Написал логику в этом контроллере. [*]Создал шаблон Blade для своего поля, указав атрибут data-controller с псевдонимом, зарегистрированным в Dashboard.js. [*]Для этого поля создан собственный класс PHP.
Однако, когда я вставляю это поле в какой-либо макет, кажется, что JavaScript не работает и на выходе отображается только HTML. Подскажите, пожалуйста, как решить эту проблему?

это моя панель управления JS

импортировать MirrorTextArea из "./controllers/mirrorTextArea.js" application.register("mirrorTextArea", MirrorTextArea); это моя виртуальная конф.

import { defineConfig } из 'vite'; импортировать laravel из «laravel-vite-plugin»; экспортировать default defineConfig({ плагины: [ ларавель({ вход: [ 'ресурсы/css/app.css', 'ресурсы/js/app.js', 'ресурсы/js/dashboard.js' ], обновить: правда, }), ], }); это мой клинок

@comComponent($typeForm, get_defined_vars()) @endкомпонент это мой контроллер

import { EditorState } из '@codemirror/state'; импортировать { EditorView, раскладку клавиатуры } из '@codemirror/view'; импортировать { defaultKeymap } из '@codemirror/commands'; класс экспорта по умолчанию расширяет window.Controller { соединять() { константные параметры = { режим: this.data.get('режим'), lineNumbers: this.data.get('lineNumbers'), тема: this.data.get('тема'), }; const textarea = this.element.querySelector('textarea'); // Находим текстовую область внутри элемента контроллера const state = EditorState.create({ doc: textarea.value, // Вы можете установить исходное содержимое из текстовой области }); const view = новый EditorView({ состояние, родитель: текстовая область, handleDOMEvents: { фокус: () => view.focus(), }, }); const viewDOM = view.dom; const viewState = view.state; view.dom = viewDOM; view.state = viewState.extend([keymap(defaultKeymap)]); просмотр.фокус(); } } это мое поле
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»