例:
{{ 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 – 自定义表单字段模板与树枝所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)