簡體   English   中英

Symfony2 Twig表單的快捷方式:form_widget

[英]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#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的方法看起來“非常”干/死。 希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM