我正在使用Symfony和propel来生成一个名为BaseMeetingMeetingsForm的表单。
在MeetingMeetingsForm.class.php中,我有以下配置方法:
public function configure() {
$this->useFields(array('name', 'group_id', 'location', 'start', 'length'));
$this->widgetSchema['invited'] = new myWidgetFormTokenAutocompleter(array("url"=>"/user/json"));
}
在MeetingMeetings.php中,我的保存方法很简单:
public function save(PropelPDO $con = null) {
$this->setOwnerId(Meeting::getUserId());
return parent::save($con);
}
然而,推进不知道我的自定义字段,因此不会对它做任何事情。我在哪里以及如何放入一个可以处理这个表单字段的特殊部分,请注意它不仅仅是对数据库的简单保存,我需要在输入之前特别处理输入。
感谢您的时间和建议,
答案 0 :(得分:1)
您必须定义验证器(和/或创建自己的验证器)。验证器clean()
方法返回需要持久化的值。
在Doctrine(我不知道Propel)中,表单然后调用表单上的doUpdateObject()
,然后在模型上调用fromArray($arr)
函数。
因此,如果它已经是您模型上的属性,则只需要创建验证器。如果它是一个更复杂的小部件,您需要在表单中添加一些逻辑。