Symfony2.1: как отрисовать повторяющийся виджет вручную

В Symfony2.1 (а также в Symfony2.0) можно рендеринг виджета вручную в шаблоне Twig. Итак, если нужно отобразить имя текстового поля «имя пользователя», соответствующие метка, ошибка и ввод могут отображаться отдельно, т. е.:

{{ form_label(form.username) }}
{{ form_errors(form.username) }}
{{ form_widget(form.username) }}

В Symfony2.1 была введена группа полей Repeated. Полезно убедиться, что пользователь не вводит неправильное значение для важной записи (например, электронная почта или пароль).

Вопрос в том, как сделать это вручную в шаблоне Twig?

Обратите внимание, что {{ form_widget(form.username) }} в этом случае будет отображать весь компонент (т. е. как метки, так и входные данные).


person JeanValjean    schedule 10.09.2012    source источник


Ответы (2)


    $builder->add('userPass', 'repeated', array(
        'type'     => 'password',
        'label'    => 'Zayso Password',
        'required' => true,
        'invalid_message' => 'The password fields must match.',
        'constraints' => new NotBlank(),

        'first_options'  => array('label' => 'Zayso Password'),
        'second_options' => array('label' => 'Zayso Password(repeat)'),

        'first_name'  => 'pass1', // form.userPass.pass1
        'second_name' => 'pass2', // form.userPass.pass2
    ));

В вашем шаблоне вы можете сделать: {{ form_widget(form.userPass.pass1 }}. Не знаю, где это задокументировано, но где-то нашел.

person Cerad    schedule 10.09.2012

Поздний ответ, но вы также можете добавить

{{ form_widget(form.username.first) }}

для создания первого элемента виджета.

Если вы хотите отображать label и widget отдельно, вы можете использовать:

{{ form_label(form.username.first) }}
{{ form_errors(form.username.first) }}
{{ form_widget(form.username.first) }}

{{ form_label(form.username.second) }}
{{ form_errors(form.username.second) }}
{{ form_widget(form.username.second) }}

Вот документация для типа повторяющегося поля.

person RRikesh    schedule 12.04.2013