IvoryCKEditorBundle Symfony:如何在我的 OWN 重新定义的 TWIG 模板中使用 IvoryCKEditorBundle TWIG 模板中的 "ckeditor_widget"
IvoryCKEditorBundle Symfony: How to use "ckeditor_widget" from IvoryCKEditorBundle TWIG template in my OWN redefined TWIG template
我已经在我的 SYMFONY 3.2 项目中实现了 IvoryCKEditorBundle。
我遵循了 here and had an overview of the doc on the official Symfony site 的指南。
现在我看到 IvoryCKEditorBundle 目录中存在以下文件:
- [我的
项目]\vendor\egoloen\ckeditor-bundle\Resources\views\Form\ckeditor_widget.html.twig
- [我的
项目]\vendor\egoloen\ckeditor-bundle\Twig\CKEditorExtension.php
而[my
project]\vendor\egoloen\ckeditor-bundle\Resources\views\Form\ckeditor_widget.html.twig
定义了{% block ckeditor_widget %}
。
在我的项目中,我使用 official doc 中给出的所有技巧重新定义了我自己的模板来呈现表单。在 [my project]\src\MyBundle\Resources\views
下我有一个文件 input_inline_template.html.twig
看起来像这样:
{% extends 'form_div_layout.html.twig' %}
{% use 'CKEditorBundle:Form:ckeditor_widget.html.twig' %}
{% block form_row %}
<div class='col-12' id={{ id ~ '_div_row_id'}}>
{% block form_label %}
<div class='col-4' id={{ id ~ '_div_label_id' }}>
{{ parent() }}
</div>
{% endblock %}
{% if form.vars.block_prefixes.2 == "textarea" %}
{% if (form.vars.block_prefixes.3 is defined) and (form.vars.block_prefixes.3 == "ckeditor") %}
{% block ckeditor_widget %}
<div class='col-8'>
{{ parent() }}
</div>
{% endblock %}
{% else %}
{% block textarea_widget %}
<div class='col-8'>
{{ parent() }}
</div>
{% endblock %}
{% endif %}
{% endif %}
</div>
{% endblock %}
这不起作用。它告诉我它找不到 ckeditor_widget
如果我没有行 {% use 'CKEditorBundle:Form:ckeditor_widget.html.twig' %}
它会抛出错误:
Block "ckeditor_widget" on template "form_div_layout.html.twig" does not exist in "form_div_layout.html.twig".
并且当执行行 {% use 'CKEditorBundle:Form:ckeditor_widget.html.twig' %}
时,它会抛出一个错误,即:
Unable to find template "CKEditorBundle:Form:ckeditor_widget.html.twig"
它告诉我它在以下位置寻找 CKEditorBundle:Form:ckeditor_widget.html.twig
:
[my_symf_project]\app/Resources/views
、[my_symf_project]\vendor\symfony\symfony\src\Symfony\Bridge\Twig/Resources/views/Form
、[my_symf_project]\vendor\knplabs\knp-menu\src\Knp\Menu/Resources/views
。
我不知道如何在 [my project]\app\config\config.yml
中配置它应该在 [my project]\vendor\egoloen\ckeditor-bundle\Resources\views\Form\
中查找 ckeditor_widget.html.twig
.
我找到了 a hint here。
在 [my project]\src\MyBundle\Resources\views\input_inline_template.html.twig
中,我已将:{% use 'CKEditorBundle:Form:ckeditor_widget.html.twig' %}
替换为:{% use 'IvoryCKEditorBundle:Form:ckeditor_widget.html.twig' %}
。
已修复。
我已经在我的 SYMFONY 3.2 项目中实现了 IvoryCKEditorBundle。
我遵循了 here and had an overview of the doc on the official Symfony site 的指南。
现在我看到 IvoryCKEditorBundle 目录中存在以下文件:
- [我的 项目]\vendor\egoloen\ckeditor-bundle\Resources\views\Form\ckeditor_widget.html.twig
- [我的 项目]\vendor\egoloen\ckeditor-bundle\Twig\CKEditorExtension.php
而[my
project]\vendor\egoloen\ckeditor-bundle\Resources\views\Form\ckeditor_widget.html.twig
定义了{% block ckeditor_widget %}
。
在我的项目中,我使用 official doc 中给出的所有技巧重新定义了我自己的模板来呈现表单。在 [my project]\src\MyBundle\Resources\views
下我有一个文件 input_inline_template.html.twig
看起来像这样:
{% extends 'form_div_layout.html.twig' %}
{% use 'CKEditorBundle:Form:ckeditor_widget.html.twig' %}
{% block form_row %}
<div class='col-12' id={{ id ~ '_div_row_id'}}>
{% block form_label %}
<div class='col-4' id={{ id ~ '_div_label_id' }}>
{{ parent() }}
</div>
{% endblock %}
{% if form.vars.block_prefixes.2 == "textarea" %}
{% if (form.vars.block_prefixes.3 is defined) and (form.vars.block_prefixes.3 == "ckeditor") %}
{% block ckeditor_widget %}
<div class='col-8'>
{{ parent() }}
</div>
{% endblock %}
{% else %}
{% block textarea_widget %}
<div class='col-8'>
{{ parent() }}
</div>
{% endblock %}
{% endif %}
{% endif %}
</div>
{% endblock %}
这不起作用。它告诉我它找不到 ckeditor_widget
如果我没有行 {% use 'CKEditorBundle:Form:ckeditor_widget.html.twig' %}
它会抛出错误:
Block "ckeditor_widget" on template "form_div_layout.html.twig" does not exist in "form_div_layout.html.twig".
并且当执行行 {% use 'CKEditorBundle:Form:ckeditor_widget.html.twig' %}
时,它会抛出一个错误,即:
Unable to find template "CKEditorBundle:Form:ckeditor_widget.html.twig"
它告诉我它在以下位置寻找 CKEditorBundle:Form:ckeditor_widget.html.twig
:
[my_symf_project]\app/Resources/views
、[my_symf_project]\vendor\symfony\symfony\src\Symfony\Bridge\Twig/Resources/views/Form
、[my_symf_project]\vendor\knplabs\knp-menu\src\Knp\Menu/Resources/views
。
我不知道如何在 [my project]\app\config\config.yml
中配置它应该在 [my project]\vendor\egoloen\ckeditor-bundle\Resources\views\Form\
中查找 ckeditor_widget.html.twig
.
我找到了 a hint here。
在 [my project]\src\MyBundle\Resources\views\input_inline_template.html.twig
中,我已将:{% use 'CKEditorBundle:Form:ckeditor_widget.html.twig' %}
替换为:{% use 'IvoryCKEditorBundle:Form:ckeditor_widget.html.twig' %}
。
已修复。