php – 使用Symfony2 Twig表单的快捷方式:form_widget
我想替换:
{{ form_errors(form.name) }} {{ form_widget(form.name,{ 'attr': {'placeholder': 'Nom'} }) }} 通过: {{ form.name|field('Nom') }} 我怎么能这样做?我尝试在Twig扩展中执行此操作,但我无法访问form_widget函数. 编辑:我可以使用form.name属性(包括父窗体),但我会重复symfony代码,这将是一个非常丑陋的大黑客 解决方法
如果你让我将attr移动到你的表单类更有意义:
class SomeForm extends AbstractType { //..... $builder->add('name','text',array('attr' => array('placeholder'=>'Nom'))); } 由于我猜您需要为某些字段进行自定义渲染,因此您可以检查: http://symfony.com/doc/2.0/cookbook/form/form_customization.html#how-to-customize-an-individual-field 您还可以创建一个新类型并按照此处的说明进行自定义: http://symfony.com/doc/2.0/cookbook/form/form_customization.html#what-are-form-themes 您甚至可以更改默认的呈现方式,并让symfony默认使用字段的标签字符串呈现占位符标记(全局启用表单主题的详细信息由上面引用的链接覆盖): {% block text_widget %} {% set type = type|default('text') %} <input type="text" {{ block('widget_attributes') }} value="{{ value }}" /> {% endblock field_widget %} {% block widget_attributes %} {% spaceless %} {% for attrname,attrvalue in attr %}{{attrname}}="{{attrvalue}}" {% endfor %} placeholder="{{ label|trans }}" {% endspaceless %} {% endblock widget_attributes %} {% block form_row %} {% spaceless %} <div class="my-class"> {{ form_errors(form) }} {{ form_widget(form) }} </div> {% endspaceless %} {% endblock form_row %} 因此,您将使用symfony提供的主题将自己限制为form_row(form.name).Symfony的aproach对我来说看起来“非常”干/坏.希望能帮助到你. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |