ckeditor icon indicating copy to clipboard operation
ckeditor copied to clipboard

[5.x]: Issue with CKEditor After Craft CMS Update

Open BleonaHalimi opened this issue 10 months ago • 4 comments

What happened?

Description

I am experiencing an issue with CKEditor after updating to the latest version of Craft CMS. My website went down, and I am seeing the following error:

craft\ckeditor\Field::craft\ckeditor\{closure}(): Argument craftcms/cms#1 ($entryType) must be of type craft\models\EntryType

Steps to Reproduce

  1. Updated Craft CMS to the latest version using composer update.
  2. After the update, CKEditor stopped working and displayed the error above.

Steps Taken to Fix the Issue

I was able to resolve the issue by performing the following steps:

php craft clear-caches/all
composer remove craftcms/ckeditor
composer require craftcms/ckeditor
php craft project-config/rebuild

Additional Context

  • I did not make any manual changes to CKEditor’s configuration before updating.
  • The issue only appeared after updating Craft CMS.
  • Reinstalling CKEditor and rebuilding the project config fixed the issue.

Would appreciate any insights on whether this is a known issue or if a fix is planned in a future release.

Craft CMS version

5.6.10.2

PHP version

8.3.17

Operating system and version

Linux 5.10.0-33-amd64

Database type and version

MariaDB 10.6.21

Image driver and version

Imagick 3.7.0 (ImageMagick 6.9.11-60)

Installed plugins and versions

  1. CKEditor 4.6.0
  2. Freeform 5.9.15
  3. Minify 5.0.0
  4. Olivemenus 5.0.0
  5. Sprig 3.5.2
  6. Super Table 4.0.3

BleonaHalimi avatar Mar 05 '25 10:03 BleonaHalimi

Hi, please search for that error message in storage/logs and post the stack trace that follows it.

brandonkelly avatar Mar 05 '25 10:03 brandonkelly

Hello, this is the Stack trace of the error

2025-03-05 08:08:06 [web.ERROR] [TypeError] TypeError: craft\ckeditor\Field::craft\ckeditor\{closure}(): Argument craftcms/cms#1 ($entryType) must be of type craft\models\EntryType|string|int, array given in /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/ckeditor/src/Field.php:691
Stack trace:
#0 [internal function]: craft\ckeditor\Field->craft\ckeditor\{closure}()
craftcms/cms#1 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/ckeditor/src/Field.php(691): array_map()
craftcms/cms#2 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/base/Component.php(180): craft\ckeditor\Field->setEntryTypes()
craftcms/cms#3 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/helpers/App.php(1542): yii\base\Component->__set()
craftcms/cms#4 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/Model.php(81): craft\helpers\App::configure()
craftcms/cms#5 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/Field.php(301): craft\base\Model->__construct()
craftcms/cms#6 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/html-field/src/HtmlField.php(75): craft\base\Field->__construct()
craftcms/cms#7 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/ckeditor/src/Field.php(466): craft\htmlfield\HtmlField->__construct()
craftcms/cms#8 [internal function]: craft\ckeditor\Field->__construct()
craftcms/cms#9 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/di/Container.php(419): ReflectionClass->newInstanceArgs()
craftcms/cms#10 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/di/Container.php(170): yii\di\Container->build()
craftcms/cms#11 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/BaseYii.php(365): yii\di\Container->get()
craftcms/cms#12 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/Craft.php(71): yii\BaseYii::createObject()
craftcms/cms#13 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/helpers/Component.php(143): Craft::createObject()
craftcms/cms#14 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/services/Fields.php(411): craft\helpers\Component::createComponent()
craftcms/cms#15 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/services/Fields.php(438): craft\services\Fields->createField()
craftcms/cms#16 [internal function]: craft\services\Fields->craft\services\{closure}()
craftcms/cms#17 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/MemoizableArray.php(90): call_user_func()
craftcms/cms#18 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/MemoizableArray.php(171): craft\base\MemoizableArray->normalizeByKey()
craftcms/cms#19 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/services/Fields.php(535): craft\base\MemoizableArray->firstWhere()
craftcms/cms#20 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/fieldlayoutelements/CustomField.php(193): craft\services\Fields->getFieldByUid()
craftcms/cms#21 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/base/Component.php(180): craft\fieldlayoutelements\CustomField->setFieldUid()
craftcms/cms#22 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/helpers/App.php(1542): yii\base\Component->__set()
craftcms/cms#23 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/Model.php(81): craft\helpers\App::configure()
craftcms/cms#24 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/fieldlayoutelements/BaseField.php(73): craft\base\Model->__construct()
#25 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/fieldlayoutelements/CustomField.php(57): craft\fieldlayoutelements\BaseField->__construct()
#26 [internal function]: craft\fieldlayoutelements\CustomField->__construct()
#27 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/di/Container.php(419): ReflectionClass->newInstanceArgs()
#28 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/di/Container.php(170): yii\di\Container->build()
#29 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/BaseYii.php(365): yii\di\Container->get()
#30 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/Craft.php(71): yii\BaseYii::createObject()
#31 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/services/Fields.php(1092): Craft::createObject()
#32 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/models/FieldLayoutTab.php(290): craft\services\Fields->createLayoutElement()
#33 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/base/Component.php(180): craft\models\FieldLayoutTab->setElements()
#34 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/helpers/App.php(1542): yii\base\Component->__set()
#35 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/Model.php(81): craft\helpers\App::configure()
#36 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/models/FieldLayoutTab.php(142): craft\base\Model->__construct()
#37 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/models/FieldLayout.php(354): craft\models\FieldLayoutTab->__construct()
#38 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/base/Component.php(180): craft\models\FieldLayout->setTabs()
#39 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/helpers/App.php(1542): yii\base\Component->__set()
#40 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/Model.php(81): craft\helpers\App::configure()
#41 [internal function]: craft\base\Model->__construct()
#42 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/di/Container.php(419): ReflectionClass->newInstanceArgs()
#43 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/di/Container.php(170): yii\di\Container->build()
#44 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/BaseYii.php(365): yii\di\Container->get()
#45 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/Craft.php(71): yii\BaseYii::createObject()
#46 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/services/Fields.php(1069): Craft::createObject()
#47 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/services/Fields.php(906): craft\services\Fields->createLayout()
#48 [internal function]: craft\services\Fields->craft\services\{closure}()
#49 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/MemoizableArray.php(90): call_user_func()
#50 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/MemoizableArray.php(124): craft\base\MemoizableArray->normalizeByKey()
#51 [internal function]: craft\base\MemoizableArray->craft\base\{closure}()
#52 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/MemoizableArray.php(90): call_user_func()
#53 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/MemoizableArray.php(76): craft\base\MemoizableArray->normalizeByKey()
#54 [internal function]: craft\base\MemoizableArray->craft\base\{closure}()
#55 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/MemoizableArray.php(76): array_map()
#56 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/base/MemoizableArray.php(104): craft\base\MemoizableArray->normalize()
#57 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/services/Fields.php(1056): craft\base\MemoizableArray->all()
#58 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/elements/db/ElementQuery.php(2543): craft\services\Fields->getLayoutsByType()
#59 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/elements/db/NestedElementQueryTrait.php(360): craft\elements\db\ElementQuery->fieldLayouts()
#60 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/elements/db/EntryQuery.php(1275): craft\elements\db\EntryQuery->nestedTraitFieldLayouts()
#61 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/elements/db/ElementQuery.php(2521): craft\elements\db\EntryQuery->fieldLayouts()
#62 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/elements/db/ElementQuery.php(1631): craft\elements\db\ElementQuery->customFields()
#63 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/db/QueryBuilder.php(227): craft\elements\db\ElementQuery->prepare()
#64 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/db/Query.php(157): yii\db\QueryBuilder->build()
#65 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/db/Query.php(287): yii\db\Query->createCommand()
#66 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/db/Query.php(320): yii\db\Query->one()
#67 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/elements/db/ElementQuery.php(1915): craft\db\Query->one()
#68 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/services/Elements.php(958): craft\elements\db\ElementQuery->one()
#69 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/services/Elements.php(898): craft\services\Elements->_elementById()
#70 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/services/Elements.php(1017): craft\services\Elements->getElementById()
#71 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/web/UrlManager.php(414): craft\services\Elements->getElementByUri()
#72 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/web/UrlManager.php(371): craft\web\UrlManager->_getMatchedElementRoute()
#73 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/web/UrlManager.php(126): craft\web\UrlManager->_getRequestRoute()
#74 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/web/Request.php(1408): craft\web\UrlManager->parseRequest()
#75 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/web/Application.php(82): craft\web\Request->resolve()
#76 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/cms/src/web/Application.php(329): yii\web\Application->handleRequest()
#77 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/yiisoft/yii2/base/Application.php(384): craft\web\Application->handleRequest()
#78 /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/web/index.php(12): yii\base\Application->run()
#79 {main} {"memory":4225992,"exception":"[object] (TypeError(code: 0): craft\\ckeditor\\Field::craft\\ckeditor\\{closure}(): Argument craftcms/cms#1 ($entryType) must be of type craft\\models\\EntryType|string|int, array given at /var/www/vhosts/ewruemlang.ch/httpdocs/website/staging/vendor/craftcms/ckeditor/src/Field.php:691)"} 

BleonaHalimi avatar Mar 05 '25 10:03 BleonaHalimi

Thanks. This is very weird. The error is coming from this closure passed to array_map():

https://github.com/craftcms/ckeditor/blob/b838205bb2de62a86863548454bd42ee0b3fd5c9/src/Field.php#L691-L694

The error is saying that the $entryType argument specifies a craft\models\EntryType|string|int type, but it clearly does not. So any value should be accepted.

Have you made any customizations to the plugin?

brandonkelly avatar Mar 05 '25 19:03 brandonkelly

Sorry for the late reply. No, I haven’t customized the plugin itself. The only modifications I’ve made were to the toolbar items in the CKEditor field configuration, adding a "New entry" item between the others.

BleonaHalimi avatar Mar 10 '25 13:03 BleonaHalimi