我正在使用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);
}
然而,propel不知道我的自定义字段,因此不做任何事情。在哪里以及如何把我放在一个特殊的部分,可以处理这个表单字段,请注意,这不仅仅是一个简单的保存到数据库,我需要处理输入之前特别输入。
谢谢你的时间和建议,
您必须定义一个验证器(和/或创建您自己的验证器)。验证器clean()
方法返回需要持久化的值。
在Doctrine(我不知道Propel)中,表单然后调用表单上的doUpdateObject()
,后者反过来调用模型上的fromArray($arr)
函数。
所以如果它已经是你模型上的一个属性,你只需要创建验证器。如果它是一个更复杂的小部件,则需要向表单添加一些逻辑。