Symfony2 форма шаблонов - PullRequest
       4

Symfony2 форма шаблонов

3 голосов
/ 31 августа 2011

Я хочу сделать форму.HTML для строки поля должен выглядеть следующим образом:

<li class="text">
  <label for="fieldname">
  <div>
    <input type="text" ... />
  </div>
</li>

когда тип поля текстовый, класс li.class должен быть таким же.

{% block field_row %}
{% spaceless %}
    <li class="text">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </li>
{% endspaceless %}
{% endblock field_row %}

а как заменить значение класса?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2012

Просто замените слово "field" на имя типа, который вы хотите изменить.

Вы делаете это так для текстовых полей, но то же самое для любого типа:

{% block text_row %}
{% spaceless %}
    <li class="text">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </li>
{% endspaceless %}
{% endblock text_row %}

или подобное для textareas:

{% block textarea_row %}
{% spaceless %}
    <li class="textarea">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </li>
{% endspaceless %}
{% endblock textarea_row %}

Важной частью является имя блока, оно должно совпадать с именем типа, который вы хотите изменить.«Field_row» является значением по умолчанию для всех типов полей, если нет точного совпадающего имени.

Это также работает для типов форм, которые вы определили самостоятельно (те, которые наследуются от AbstractType, поэтому важно добавитьимя для ваших типов форм, см http://symfony.com/doc/2.0/book/forms.html#creating-form-classes).

0 голосов
/ 07 сентября 2011

Вы можете попытаться присоединить открытый член к вашему классу FormType (если он есть ...) и вызвать его из шаблона веточки.

Возможно, к массиву атрибутов формы можно также получить доступ в шаблоне веточки ...

class YourType extends AbstractType
{
    public $class = 'text';

    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('fieldname');
    }
    //...
}

И

{% block field_row %}
{% spaceless %}
    <li class="{{ form.class }}">
        {{ form_label(form, label|default(null)) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </li>
{% endspaceless %}
{% endblock field_row %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...