[5.x]: Issue with CKEditor After Craft CMS Update
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
- Updated Craft CMS to the latest version using composer update.
- 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
- CKEditor 4.6.0
- Freeform 5.9.15
- Minify 5.0.0
- Olivemenus 5.0.0
- Sprig 3.5.2
- Super Table 4.0.3
Hi, please search for that error message in storage/logs and post the stack trace that follows it.
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)"}
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?
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.