2013-05-24 2 views
0

Насколько я знаю, symfony 2 содержит свой собственный построитель форм. Однако я не знаю, как соединить его с классами форм ...Простые формы с использованием формообразователя

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

public function proccessFormAction() 
{ 
    if(! $_POST) 
    { 
     return $this->render('::ViewWithForm.html.twig'); 
    } 
    else // after clicking submit in the form above 
    { 
     // validation, and other operations 
    } 
} 

Создание отдельного классы классов, обрабатывающие все это было бы здорово, но ... и вот первый вопрос - где я должен поместить эти классы? Просто бросьте их в контроллеры пучка?

Также я думал о отображении формы изнутри метода processFormAction() и делал все виды операций над ними в классе формы - это хорошая идея?

По форме класс Я имею в виду это Task класс из учебника.

+0

Что вы подразумеваете под «формами классов»? В большинстве случаев у вас будет объект, к которому вы хотите привязать. Чтобы облегчить процесс привязки данных и создания формы, вы должны создать класс типа формы (например, «UserType.php»), который будет указывать разработчику формы, как представлять этот объект (в данном случае, Пользователь) в качестве полей формы. Это то, что вы имели ввиду? –

+0

Да, это именно то, что я имею в виду. – user2252786

+0

Хорошо, эти типы классов типов будут входить в каталог '/ src/path/to/bundle/Form/Type'. Таким образом, каталог 'Form' будет находиться на том же уровне, что и' Controller' и 'Resources' и будет содержать подкаталог' Type' –

ответ

2

Лучшая точка входа, чтобы получить представление о том, как создавать и форму обработки с работой Symfony2 ...

... это Forms chapter Книги.

Он содержит примеры кода и довольно хорошее быстрое введение в то, что происходит под капотом.

+0

В каждом контроллере в моем комплекте у меня есть несколько разных форм ... Могу ли я разделить эту папку bundle/Form на подпапки, соответствующие именам контроллеров? – user2252786

+0

Общее соглашение состоит в том, чтобы префикс имен FormType с именем соответствующего объекта, т.е. класса UserFormType, в папке Vendor/YourBundle/Form/Type/UserFormType.php ... Но, конечно, вы можете дать им любое имя и поместить их в любой каталог, который вы хотите, до тех пор, пока ваш каталог и структура имен и имен файлов/классов и пространство имен следуют за соглашением psr-0. – nifr

+0

Хм, подождите секунду ... поэтому классы папки Form/Type выполняют то же самое, что и класс Task: http://symfony.com/doc/master/book/forms.html? – user2252786