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

时间:2011-07-18 09:04:16

标签: php forms symfony1 symfony-1.4 propel

我正在使用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);
  }

然而,推进不知道我的自定义字段,因此不会对它做任何事情。我在哪里以及如何放入一个可以处理这个表单字段的特殊部分,请注意它不仅仅是对数据库的简单保存,我需要在输入之前特别处理输入。

感谢您的时间和建议,

1 个答案:

答案 0 :(得分:1)

您必须定义验证器(和/或创建自己的验证器)。验证器clean()方法返回需要持久化的值。

在Doctrine(我不知道Propel)中,表单然后调用表单上的doUpdateObject(),然后在模型上调用fromArray($arr)函数。

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