假设我们有一个客户类的注册表单,我们只询问三个字段(姓名、电子邮件),之后,当该用户第一次登录时,我们想要填写此信息。
首先,我们在 lib/form/doctrine 中有一个名为“CustomerForm.class.php”的文件,该文件是在命令行上自动生成的。在此文件中,我们仅“设置”了 3 个字段和验证器,如果我们想使用,我们会执行类似的操作:
$this->form = CustomerForm();
其次,我们手动创建另一个名为“CustomerFormStep1.class.php”的表单,我们可以在其中设置以验证其他字段。但是当我们这样做时..
$this->form = CustomerFormStep1();
它返回错误:
Fatal error: Class 'CustomerFormStep1'
未找到
出了什么问题?
谢谢。
假设您的表单定义为:
class CustomerFormStep1 extends sfForm
或类似的(sfFormDoctrine等),并且像你所说的那样正确命名(CustomerFormStep1.class.php)和lib/form中,那么Symfony应该很好地选择定义。 创建并将其放置在正确的位置后是否清除了缓存? (
symfony cc
).
按照 @richsage 的指示创建新的 CustomerFormStep1 类。然后,在你的动作中你可以写一些类似的东西:
public function executeLogin(){
//before login
$this->form = new CustomerForm();
}
public function executeLoggedIn(){
$this->form = new CustomerFormStep1();
//other steps
}
你还没读过教程吗?扩展表单在 reh admin 生成器的上下文中得到了完美的描述,当然可以应用于任何情况。