我有一个模块:“工作”
在Job中,我有两个部分: _partialA _partialB
两个部分都使用相同的JobForm.Class.php
以下是我正在努力实现的问题:
在JobForm.Class.php中:
function removeFields()
{
if ($partialName == 'partialA'){
unset ($this['field_a']);
}
if($partialName == 'partialB'){
unset ($this['field_b']);
}
}
显然,我在定义“$ partialName”
时遇到了困难帮助?建议?是否有其他/更好的方法来实现相同的预期结果?
提前致谢。
答案 0 :(得分: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();
希望这会有所帮助。 丹尼尔
答案 1 :(得分:0)
我实际上使用过Andreu Heineken建议的解决方案(顺便说一下,喜欢啤酒),但感谢Dan,您的解决方案也是如此。我刚刚创建了一个新的Formclass并扩展了我需要的baseModule。
以下是详细信息的链接:Solution to question