Т.к. в контроллере мы указали, что форма передаётся в шаблон под названием user, в папке Hello, давайте теперь создадим его. Переходим в папку Resources/views и создаём в папке Hello шаблон user.php. Добавим в него следующее
<?php $view->extend('HelloBundle::layout.php')?>
<form id="login_form" action="#" method="post">
<div class="form-row">
<?php echo $form['name']->label('Name'); ?>:
<div class="form-row-content">
<?php echo $form['name']->errors();?>
<?php echo $form['name']->widget(); ?>
</div>
</div>
<div class="form-row">
<?php echo $form['surname']->label('Name'); ?>:
<div class="form-row-content">
<?php echo $form['surname']->errors(); ?>
<?php echo $form['surname']->widget(); ?>
</div>
</div> <?php echo $form->hidden() ?>
<input type="submit" value="Submit" name="submit" />
</form>
Вот и всё. Теперь, чтобы узнать была ли отправлена форма, добавим в экшн нашего контроллера следующее.
<?php
//метод контроллера
public function userAction(){
...
//проверям была ли отправлена форма
if ($this['request']->getMethod() == 'POST'){
//берем данные из глобального массива POST
//заметьте, что все поля содержаться в массиве user
$request = $this['request']->request->get('user');
$form->bind($request);
if ($form->isValid()){//проверяем валидна ли форма
//do something
}
}
}
Думаю, что на этом можно закончить.
P.S. Ещё пару слов о представлении формы.
//вывод тега формы
<?php echo $form->form('#') ?>
Очень интересный метод widget//вывод тега
<?php echo $form['title']->widget() ?>
В качестве параметров принимет1-ый параметр массив с атрибутами. Можно установить стиль для поля
//вывод тега
<?php echo $form['title']->widget(array('class' => 'required')) ?>
2-ой параметр это шаблон который будет выводить данное поле. Указывается так же как и шаблон в контроллере.<?php echo $form['captcha']->widget(array(), 'RecaptchaBundle:Field:recaptcha_field.php'); ?>
Вывод всех полей формы<?php echo $form->render() ?>
Вывод скрытых полей. Внимание! В любом случае прописывайте это, даже если у вас отсутсвуют скрытые поля, т.к. Symfony2 добавляет поле token без которого ваша форма не пройдёт валидацию.//вывод скрытых полей
<?php echo $form->hidden() ?>
Более подробную информацию об отображении форм вы можете найти здесьP.P.S.
Формы оказались ну уж очень объемным материалом. Поэтому to be continued. В следующей части мы рассмотрим группы в формах.
Комментариев нет:
Отправить комментарий