我正在处理一个允许用户编辑特定订单的表单。 我希望能够创建一个已存储在不同表中的销售代理下拉列表。
外键是UserID(用户表的别名是SalesAgent)。
这是我对edit_sales_agent操作的看法: 在我的控制器中我有这个:
echo $this->Form->create("Order");
echo $this->Form->input("UserID");
我认为在执行此操作时应自动创建下拉列表,但会创建一个文本区域。
有谁知道该怎么做?
谢谢!
答案 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的命名约定将使您的生活更轻松。使用您自己的约定将导致您需要不断覆盖框架的工作。