在这个 cakePHP 视图中,数据是如何传递给这个 HTML 辅助方法的?

How is data being passed to this HTML helper method in this cakePHP view?

我正在拆解某人用 CakePHP 编写的项目。我熟悉 MVC 范式,只是不熟悉 Cake。

生成的 HTML 是一个 select 下拉菜单。此下拉列表的数据来自控制器,分配如下:

$this->set(compact('venues', 'eventTypes', 'positions', 'hms'));

其中 $hms 是包含 select 元素数据的数组(根据对模型的查询定义)。但是在视图中,这就是我对下拉列表的全部内容:

echo $this->Form->input('Event.hm_id', array('label' => 'House Manager', 'empty' => '(none)', 'class' => 'chzn-selectaaa'));

在视图中,我希望看到一些对 $hms 值的引用。 HTML 表单助手从哪里获取数据来构建下拉列表?

在将 hms 数组映射到 hm_id.

的输入表单助手上发生了一些自动装配魔法

这篇 CakePHP 文档应该可以帮助您了解魔术的实际实现方式。它全部基于数据库中的表和字段以及模型本身的命名约定。

http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#creating-form-elements

这里还有 API 文档。

http://api.cakephp.org/2.6/class-FormHelper.html#_input

希望对您有所帮助。