2011-12-12 43 views
0

這兩個部分使用相同的JobForm.Class.php

下面是我想要實現的問題:

在JobForm.Class.php:

function removeFields() 
{ 
if ($partialName == 'partialA'){ 
unset ($this['field_a']); 
} 
if($partialName == 'partialB'){ 
unset ($this['field_b']); 
} 
} 

很顯然,我在定義「$ partialName」

幫助有困難嗎?建議?是否有另一種/更好的方式去實現相同的期望結果?

在此先感謝。

+0

也許你應該定義2點的形式,而不是 –

+0

不知道你能做到這一點同樣的模塊中。我會怎麼做呢? – Patrick

+0

您可以根據需要定義儘可能多的課程擴展您的模型窗體課程 –

回答

0

我實際上使用了上面Andreu Heineken(愛喝啤酒)所提出的解決方案,不過謝謝Dan,您的解決方案也是如此。我剛剛創建了一個新的Formclass,並擴展了我需要的baseModule。

下面是詳細信息的鏈接:Solution to question

0

首先,我不會教你關於你的部分名稱的表單,因爲它不應該綁定到你的視圖層。相反,找到你想要實現的設置的語義名稱(也許'withExtraFields'左右,我只是猜測)。

話雖這麼說,至少有3種方式做你想要什麼:

您可以把它作爲一個選項的形式:

$form = new JobForm($job, array('withExtraFields' => true)); 

,然後就此採取行動表格內:

if($this->getOption('withExtraFields') //do something 

或者,你可以取消設置在控制器的東西(可能不是最好的地方):

//actions.class.php 
if($partialName == 'partialA') unset($form['field_a']); 

或者,正如上面所建議的,你可以創建2種不同的形式(最好的,如果多個字段或不同的驗證規則):

//actions.class.php 
if($partialName == 'partialA') $form = SpecialJobForm(); 
else $form = NotSoSpecialJobForm(); 

希望這有助於。 丹尼爾

相關問題