2011-07-18 96 views
1

我使用Symfony和propel来生成名为BaseMeetingMeetingsForm的表单。Symfony添加和处理自定义表单字段

在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

请分享阅读/处理表单数据的代码。 – hakre

+0

没有,symfony会在什么地方做到这一点,除非你知道在哪里? –

+1

好的,那就是你错过的部分。如果抽象的标准处理不是您想要自动获得的所有内容,则需要自行处理表单数据。请参阅http://www.symfony-project.org/jobeet/1_4/Propel/en/10并向下滚动*表单操作*。它应该有你正在寻找的信息。 – hakre

回答

1

你必须定义一个验证器(和/或创建自己的)。验证程序clean()方法返回需要保持的值。

在Doctrine(我不知道Propel)中,窗体在窗体上调用doUpdateObject(),窗体依次调用模型上的fromArray($arr)函数。

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

相关问题