来自不同表CakePHP的下拉列表

时间:2015-08-04 19:16:43

标签: sql-server cakephp cakephp-2.0

我正在处理一个允许用户编辑特定订单的表单。 我希望能够创建一个已存储在不同表中的销售代理下拉列表。

外键是UserID(用户表的别名是SalesAgent)。

这是我对edit_sales_agent操作的看法: 在我的控制器中我有这个:

echo $this->Form->create("Order");
echo $this->Form->input("UserID");

我认为在执行此操作时应自动创建下拉列表,但会创建一个文本区域。

有谁知道该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:2)

使用CakePHP命名约定,外键应为user_id而不是UserID。如果你更正了这个,然后使用find('list')将控制器中的$users变量设置为索引数组,表单助手应该自动生成一个下拉列表。

因此,在您的控制器中,您需要执行以下操作: -

$users = $this->Order->User->find('list');
$this->set(compact('users'));

然后你的表格输入: -

echo $this->Form->input('user_id');

如果您无法重命名外键以符合Cake标准,那么您需要告诉表单助手使用the $users array for the options: -

echo $this->Form->select('UserId', $users);

使用CakePHP的命名约定将使您的生活更轻松。使用您自己的约定将导致您需要不断覆盖框架的工作。