Проблема У меня есть библиотека «Trumbowig» и настраиваемые поля.
Я заставил это работать, но это была всего лишь проверка, чтобы убедиться, что все необходимые файлы работают, теперь я хочу создать настраиваемое поле, чтобы иметь возможность используйте эту функцию правильно.
Я не понимаю, как создать шаблон, который будет использоваться в формах.
Я прочитал документацию здесь я посмотрел TextEditorField и TextAreaField в пакете EasyAdmin.
Я обнаружил, что мне нужен собственный класс для моего поля, поэтому я создал этот класс TrumbowygEditorField:
Код: Выделить всё
final class TrumbowygEditorField implements FieldInterface
{
use FieldTrait;
public const OPTION_MAX_LENGTH = TextField::OPTION_MAX_LENGTH;
public const OPTION_NUM_OF_ROWS = 'numOfRows';
public const OPTION_RENDER_AS_HTML = TextField::OPTION_RENDER_AS_HTML;
public const OPTION_STRIP_TAGS = TextField::OPTION_STRIP_TAGS;
public const OPTION_TRUMBOWYG_CONFIG = 'trumbowygConfig';
public static function new(string $propertyName, ?string $label = null): self
{
return (new self())
->setProperty($propertyName)
->setLabel($label)
// this template is used in 'index' and 'detail' pages
->setTemplatePath('admin/field/trumbowyg_editor.html.twig')
// this is used in 'edit' and 'new' pages to edit the field contents
->setFormType(TextareaType::class)
->setCustomOption(self::OPTION_TRUMBOWYG_CONFIG, [])
->setCustomOption(self::OPTION_MAX_LENGTH, null)
->setCustomOption(self::OPTION_NUM_OF_ROWS, 5)
->setCustomOption(self::OPTION_RENDER_AS_HTML, false)
->setCustomOption(self::OPTION_STRIP_TAGS, false);
}
Код: Выделить всё
{% set render_as_html = field.customOptions.get('renderAsHtml') %}
{% if ea.crud.currentAction == 'detail' %}
{{ render_as_html ? field.formattedValue|raw|nl2br : field.formattedValue|nl2br }}
{% else %}
{{ render_as_html ? field.formattedValue|raw : field.formattedValue|striptags }}
{% endif %}
Теперь мне трудно понять, как создать поле формы, я знаю что это связано с этой строкой ->setFormType(TextareaType::class), и мне нужно найти способ импортировать CSS-файл, несколько js-скриптов и выполнить что-то вроде этого:
Код: Выделить всё
document.addEventListener('DOMContentLoaded', function() {
$('{{ fieldId }}').trumbowyg();
});
Можете ли вы мне помочь? Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/788 ... -easyadmin