Могу ли я сделать более одной формы для одного и того же модельного класса в Symfony? - PullRequest
1 голос
/ 06 января 2010

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

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

$this->form = CustomerForm();

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

$this->form = CustomerFormStep1();

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

Что не так?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 06 января 2010

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

class CustomerFormStep1 extends sfForm

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

1 голос
/ 07 января 2010

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

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

public function executeLoggedIn(){
 $this->form = new CustomerFormStep1();
 //other steps
}
0 голосов
/ 06 января 2010

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

...