2011-07-18 37 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)函數。

所以,如果它已經是你的模型的屬性,你只需要創建驗證器。如果它是一個更復雜的小部件,則需要在表單中添加一些邏輯。

相關問題