вторник, 26 октября 2010 г.

Формы в Symfony2. Часть первая создание фомы.

В этой статье я хочу рассказать вам как можно создавать формы с помощью фреймвока Symfony2, а точнее его компонента Form.

  • Замечу, что я использую sandbox версию фреймвока которую можно скачть отсюда
  • Так же желательно обновить файлы фреймвока отсюда


Для начала давайте разберёмся, что ткое форма в идеологии Symfony2.
  1. Что такое форма?
Форма в Symfony2 представляется в виде какой-то сущности, поля формы - это свойства сущности, которые можно изменять. Для примера давайте рассмотрим простой класс. В папке HelloBundle создайте папку Model, а в ней файл User.php

<?php
namespace Application\HelloBundle\Model;

class User{
   public $name;
   public $surname;
}

В этом классе мы видим два свойства name и surname. То есть наша форма будет иметь два поля в соответсвии с названиями наших свойств.
В документации к фреймвоку пример создания формы описывается в самом контроллере, мне это не по душе (скорее всего там это описывается в общих чертах, для просто и быстрого представления). Поэтому я предпочитаю реализовывать создание формы (её формирование) в методе класса который по сути и является формой. Называю я этот метод prepareForm. Итак, давайте добавим этот метод к нашему классу и создадим форму.


но перед этим необходимо добавить public методы get и set для наших свойств. Для тех кто пользуется средой разработки Netbeans это доступно сочитание клавиш alt+insert

<?php
namespace Application\HelloBundle\Model;
use Symfony\Component\Form\Form,
    Symfony\Component\Form\TextField;
class User{
   ...
   public function prepareForm(){
     $form = new Form('user', $this);
     $form->add(new TextField('name'));
     $form->add(new TextField('surname'));
     return $form;
   }
}

Рассмотрим представленный выше кусок кода. 
Во первых, для того, чтобы создать форму необходимо подключить класс Form
Во вторых для создания текстового поля (тег input type="text") необходимо подключить класс, который отвечает за его создание. 
Так же хотелось бы отметить, что имя поля должно совпадать со свойством класса, который реализует форму.

На этом первая часть окончена. Во второй части мы добавим валидацию к форме и представим форму в html виде.

1 комментарий: