symfony – 自定义表单字段模板与树枝

symfony – 自定义表单字段模板与树枝,第1张

概述我想在树枝中创建一个自定义模板来渲染表单字段. 例: {{ form_row(form.field) }} 这可以通过形式主题来覆盖 {% block form_row %}... custom code{% endblock form_row %} 我想做的是: {% block custom_row %}... custom code{% endblock custom_row %} 我想在树枝中创建一个自定义模板来渲染表单字段.

例:

{{ form_row(form.fIEld) }}

这可以通过形式主题来覆盖

{% block form_row %}... custom code{% endblock form_row %}

我想做的是:

{% block custom_row %}... custom code{% endblock custom_row %}

并像这样使用它:

{{ custom_row(form.fIEld }}

但是,这会引发异常,即找不到方法custom_row.

我的理解是这可以通过Twig扩展来完成,但我不知道如何将块注册为一个函数.

更新

我真正想要的是:

我使用twitter bootstrap和一个覆盖所有表单主题的包.并且它在收音机周围呈现div,因此无法内联.所以我想做这样的事情:

复制他们的模板,摆脱div:

{% block inline_radio_row %}    {% spaceless %}        {% set col_size = col_size|default(bootstrap_get_col_size()) %}        {% if attr.label_col is defined and attr.label_col is not empty %}            {% set label_col = attr.label_col %}        {% endif %}        {% if attr.Widget_col is defined and attr.Widget_col is not empty %}            {% set Widget_col = attr.Widget_col %}        {% endif %}        {% if attr.col_size is defined and attr.col_size is not empty %}            {% set col_size = attr.col_size %}        {% endif %}        {% if label is not sameas(false) %}            {% if not compound %}                {% set label_attr = label_attr|merge({'for': ID}) %}            {% endif %}            {% if required %}                {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' required')|trim}) %}            {% endif %}            {% if label is empty %}                {% set label = name|humanize %}            {% endif %}            {% set label_attr = label_attr|merge({'class': (label_attr.class|default('') ~ ' radio-inline')|trim}) %}            <label{% for attrname,attrvalue in label_attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}>                {{ block('radio_Widget') }}                {{ label|trans({},translation_domain) }}            </label>        {% else %}            {{ block('radio_Widget') }}        {% endif %}        {{ form_errors(form) }}    {% endspaceless %}{% endblock inline_radio_row %}

然后

{{ inline_radio_row(form.fIEld) }}

我最终只是覆盖整个主题,并在问题的div周围添加了ifs,一个类(无线电内联).但我仍然想知道是否有办法让这项工作成功.似乎它会让你如此努力地工作如此简单.

更新2

我找到了功能:

class FormExtension extends \Twig_Extension{    public function getFunctions()    {        return array(            'inline_radio_row'  => new \Twig_Function_Node(                'Symfony\BrIDge\Twig\Node\SearchAndRenderBlockNode',array('is_safe' => array('HTML'))            ),);    }}

这完全符合我的要求,但它表示已弃用.有谁知道如何使用它的更新版本?

更新3

使用http://twig.sensiolabs.org/doc/tags/include.html也可以实现类似的功能

解决方法 您可以为表单行的每个部分使用twig函数:

> form_label(form.field)
> form_widget(form.field)
> form_errors(form.field)

例如:

<div >    {{ form_label(form.fIEld) }} {# the name of the fIEld #}    {{ form_errors(form.fIEld) }} {# the fIEld #}    {{ form_Widget(form.fIEld) }} {# the errors associated to the fIEld #}</div>
总结

以上是内存溢出为你收集整理的symfony – 自定义表单字段模板与树枝全部内容,希望文章能够帮你解决symfony – 自定义表单字段模板与树枝所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1055119.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存