2010-11-11 56 views
-1

我使用symfony的embedRelation方法嵌入forms.The碼是這樣的:symfony:自定義驗證器不適用於embedRelation?

公共功能配置(){// ......

$這 - > embedRelation('FOOS作爲foos'); (new MenuValidatorSchema());這個方法可以用來創建一個新的MenuValidatorSchema(),這個新的MenuValidatorSchema() 35~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~這不起作用。 }

+0

StackOverflow是一個社區,你需要尊重一些衝動。當某人回答你的問題時,接受這個答案並結束問題,不要這樣。 – 2012-11-28 13:25:54

回答

3

當在Symfony中嵌入表單時,頂層窗體會跟蹤所有內容。嵌入式表單的小部件模式,驗證器模式,默認等不再直接使用。你可以看到sfForm::embedForm中發生了什麼。

注意,在這種情況下,因爲它是一個後期的驗證,這是完全可以接受的將它添加到頂層的形式,即:

$this->mergePostValidator(new MenuValidatorSchema()); 

如果你想嵌入表單上的驗證模式並將其目前尚無驗證後,你可以簡單地做:

$this->validatorSchema['foos']->setPostValidator(new MenuValidatorSchema()); 

如果它現有的一個,你必須把它們變成一個sfValidatorAnd,做這樣的事情:

$this->validatorSchema['foos']->setPostValidator(new sfValidatorAnd(array(
    'validators' => array(
     $this->validatorSchema['foos']->getPostValidator(), 
     new MenuValidatorSchema() 
    ) 
))); 

最後一個選項的語法只是爲什麼在頂級窗體上設置後驗證程序是首選項時可用的一個原因。

+0

我明白了,謝謝你的回答。 – xdazzyy 2010-11-11 04:47:51

+1

請接受:) – 2010-11-24 15:31:23