Могу ли я сделать более одной формы для одного и того же класса модели в symfony?

Что ж, представьте, что у нас есть регистрационная форма класса Customer, и мы запрашиваем только три поля (имя, фамилия, адрес электронной почты), и после того, как этот пользователь впервые войдет в систему, мы хотим заполнить эту информацию.

Во-первых, у нас есть в lib/form/doctrine файл с именем «CustomerForm.class.php», который автоматически генерируется в командной строке. В этом файле мы «настраиваем» только 3 поля и валидаторы, и если мы хотим использовать, мы делаем что-то вроде этого:

$this->form = CustomerForm();

Во-вторых, мы вручную создаем другую форму с именем «CustomerFormStep1.class.php», где мы можем настроить проверку других полей. Но когда мы делаем..

$this->form = CustomerFormStep1();

возвращает ошибку: Fatal error: Class 'CustomerFormStep1' не найдено

Что не так?

Спасибо.


person jojan    schedule 06.01.2010    source источник


Ответы (3)


Предполагая, что у вас есть форма, определенная как:

class CustomerFormStep1 extends sfForm

или аналогичный (sfFormDoctrine и т. д.), и правильно названный, как вы говорите (CustomerFormStep1.class.php) и в lib/form, тогда Symfony должен просто правильно подобрать определение. Вы очищали кеш после создания и размещения в нужном месте? (symfony cc).

person richsage    schedule 06.01.2010

Создайте новый класс CustomerFormStep1 в соответствии с инструкциями @richsage. Затем в своих действиях вы можете написать что-то вроде:

public function executeLogin(){
 //before login
 $this->form = new CustomerForm();
}

public function executeLoggedIn(){
 $this->form = new CustomerFormStep1();
 //other steps
}
person fenderplayer    schedule 06.01.2010

Разве вы не читали руководство? Расширение форм прекрасно описано в контексте генератора администратора reh и, конечно же, может применяться в любом случае.

person Felix Kling    schedule 06.01.2010