Symfony2: опция "виджет" не существует - PullRequest
4 голосов
/ 17 марта 2012

Я пытаюсь создать форму, используя symfony2, но получаю сообщение об ошибке «Опция« виджет »не существует» всякий раз, когда я добавляю опцию виджета, чтобы указать тип поля формы.

Я следую примеру, приведенному в документации там http://symfony.com/doc/current/book/forms.html

вот мой код, который не работает.

class UserType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
    $builder
        ->add('Name')
        ->add('Login')
        ->add('Password')//, 'text', array('widget' => 'password'))
        ->add('ConfirmPassword')//, 'text', array('widget' => 'password', 'label' =>'Confirm Password'))
        ->add('Email', 'text', array('widget' => 'email'))
        ->add('ConfirmEmail')//,'text', array('widget' => 'email', 'label' =>'Confirm Email'))    
   //...
}

Кто-нибудь знает почему? Спасибо

1 Ответ

7 голосов
/ 17 марта 2012

Я считаю, что правильный способ сделать то, что вы хотите достичь, заключается в следующем:

->add('Name', 'text')
->add('Login', 'text')
->add('Password', 'password')
->add('ConfirmPassword', 'password', array('label' =>'Confirm Password'))
->add('Email', 'email')
->add('ConfirmEmail', 'email')

Первый аргумент метода add - это поле name (оно должно быть уникальным внутри формы). Второй - type, и он отвечает за форму, полученную виджетом при рендеринге. Список встроенных типов здесь . Третий аргумент - массив опций. Каждый type имеет свой собственный набор возможных options. Действительно, некоторые типы имеют опцию widget. Например, date тип имеет такую ​​опцию. Но типы password и email не имеют такой опции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...