Craft CMS 插件 AssetBundle 导致 Craft.js 后端错误
Craft CMS plugin AssetBundle Causeing Craft.js Error in Backend
插件将管理区域中的以下 url 路由到控制器。
url: /admin/custom_route
控制器加载 CpAssets::class 依赖的插件资产包并加载所有加载的 twig 模板,但浏览器控制台给出 Craft.js 的错误,即 Craft 未在 [=24= 中定义] 扩展插件功能。其中 Craft.js 和 Craft.min.js 都被加载,而应该只加载其中一个。
一直在研究 yii 的功能,但我不知所措。
解决同样问题的其他人的解决方案。
在您的 template.twig 中,您需要添加 head 标签并调用 head 函数,这样可以消除 Craft.js 错误。
<head>
{{ head() }}
</head>
我通过查看 src/web/assets/cp/CpAsset.php 找到了解决方案,其中第 98 - 103 行定义了缺少的 js Craft 对象。
// Define the Craft object
$craftJson = Json::encode($this->_craftData(), JSON_UNESCAPED_UNICODE);
$js = <<<JS
window.Craft = {$craftJson};
JS;
$view->registerJs($js, View::POS_HEAD);
其中View::POS_HEAD根据yii文档定义了脚本在文档中加载的位置。刚打电话
{{ head() }}
它需要在文档的 head 元素标签内。
插件将管理区域中的以下 url 路由到控制器。
url: /admin/custom_route
控制器加载 CpAssets::class 依赖的插件资产包并加载所有加载的 twig 模板,但浏览器控制台给出 Craft.js 的错误,即 Craft 未在 [=24= 中定义] 扩展插件功能。其中 Craft.js 和 Craft.min.js 都被加载,而应该只加载其中一个。
一直在研究 yii 的功能,但我不知所措。
解决同样问题的其他人的解决方案。
在您的 template.twig 中,您需要添加 head 标签并调用 head 函数,这样可以消除 Craft.js 错误。
<head>
{{ head() }}
</head>
我通过查看 src/web/assets/cp/CpAsset.php 找到了解决方案,其中第 98 - 103 行定义了缺少的 js Craft 对象。
// Define the Craft object
$craftJson = Json::encode($this->_craftData(), JSON_UNESCAPED_UNICODE);
$js = <<<JS
window.Craft = {$craftJson};
JS;
$view->registerJs($js, View::POS_HEAD);
其中View::POS_HEAD根据yii文档定义了脚本在文档中加载的位置。刚打电话
{{ head() }}
它需要在文档的 head 元素标签内。