Symfony添加和处理自定义表单字段


Symfony Adding and Dealing With Custom Form Fields

我正在使用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)函数。

所以如果它已经是你模型上的一个属性,你只需要创建验证器。如果它是一个更复杂的小部件,则需要向表单添加一些逻辑。