[英]Shortcuts with Symfony2 Twig forms : 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#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的方法看起來“非常”干/死。 希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.