Вопрос относительно: Quill js, Quill-Image-Resize и PHP-Quill-Renderer

Я внедрил на свой веб-сайт редактор Quill WYSIWYG. При этом мне также понадобилось средство изменения размера изображения, и многие люди рекомендовали этот компонент . Я также установил PHP Quill Renderer для перевода Quill's Delta в HTML.

Я все протестировал, и все работает нормально (данные, которые я получаю от средства визуализации, соответствуют данным, которые я отправил вместе с формой).

Однако, если я изменяю размер изображения в редакторе Quill и отправляю его в средство визуализации, я получаю следующую ошибку:

Fatal error: Uncaught TypeError: Argument 1 passed to DBlackborough\Quill\Delta\Html\Insert::__construct() must be of the type string, array given, called in ...... on line 22

Я проверил файл, и эта функция была в строке 22:

public function __construct(string $insert, array $attributes = [])
{
    $this->tag = null;

    $this->insert = $insert;
    $this->attributes = $attributes;
}

Как новичок во всем этом, я не знаю, что мне делать. Я предполагаю, что, поскольку я использую внешний компонент (например, Quill Image Resizer), который не был частью Quill js, разработчика Php Quill Renderer не поддерживает изменение размера изображения.

Может ли кто-нибудь посоветовать мне шаги, которые я должен предпринять, чтобы исправить эту ошибку?


person anna    schedule 14.10.2018    source источник


Ответы (1)


у меня была такая же проблема, вот как я ее исправил

Информация о проблеме:

Атрибут width="xx" вставляется плагином Quill Image Resizer при изменении размера изображения. Однако в PHP Quill Renderer Parse не знает этого атрибута, поскольку при отсутствии связи Delta используется значение по умолчанию.

switch ($attribute) {
    default:
        $this->insert($quill);
        break;
}

Решение:

Чтобы исправить эту проблему, нам нужно добавить новую константу width в параметры, а затем при синтаксическом анализе нам нужно добавить новую константу case, чтобы связать эту константу с изображением.

page: Options.php (строка: 50)

public const ATTRIBUTE_WIDTH = 'width';
public const ATTRIBUTE_ALT = 'alt';

страница: Parser / Parse.php (строка: 179)

case Options::ATTRIBUTE_WIDTH:
    $this->image($quill);
    break;
case Options::ATTRIBUTE_ALT:
    $this->image($quill);
    break;

Не уверен, что это лучшее решение, но оно решает проблему, и не следует вносить никаких изменений в основные функции. Как вы можете видеть в моем коде, я также добавляю атрибут alt, чтобы связать его с изображением. Это может быть так же выгодно для вас

Удачи !

person Jeremy    schedule 18.10.2018
comment
Я немного опоздал с этим, но если проблема все еще возникает, создайте проблему в репо, и я исправлю ее. Как вариант, поднимите пиар, и я объединю ваше исправление. - person DBlackborough; 28.08.2019