在我的CakePHP 1.3应用程序中,我需要一个表单控件:
所以,我正在创建一个输出我的表单控件的元素,并且在使用编辑操作的值填充控件时遇到了障碍。现在,当您使用默认字段类型时,CakePHP会为您执行此操作,但我需要从$this->data
中获取信息并在此情况下自行完成。
问题是$this->data
看起来像这样:
array(
'Model' => array( /* fields from Model */ ),
'AnotherModel' => array( /* fields from AnotherModel */ )
);
在我的可重用元素中,我不知道我的字段属于哪个模型。但是,当我打电话给$form->create()
时(在包含我正在写的元素的视图中),我告诉了Form Helper这个信息,所以它似乎应该能够告诉我。实际上,API documentation for the FormHelper class告诉了defaultModel
属性,但遗憾的是,这个属性是空的。
现在,简单的解决方案是将模型作为参数传递。我能做到。但是,我想尽可能避免参数膨胀,看起来这应该是可能的,但我无法弄清楚如何。有办法吗?
谢谢!
答案 0 :(得分:1)
现在我觉得有点羞怯。我应该在发布之前检查超类。 FormHelper继承自从Helper继承的AppHelper,而Helper有一个model()
方法可以实现这一目的。
经验教训。 :)
答案 1 :(得分:0)
回避问题,但另一种方法是继承FormHelper并添加自定义方法来创建控件:
App::import('Helper', 'Form');
class CustomFormHelper extends FormHelper {
public function customControl() {
$control = $this->input(…);
$control.= $this->checkbox(…);
return $control;
}
}