喂!在这里总CakePHP noob。
在底部/
更新这是一个双重问题。在用于添加user
个对象的视图中,我想在表单中使用下拉(选择)字段。
每个user
属于group
所以当我添加用户时,我想要一个下拉列表,其中包含用户可能加入的所有组。目前,group_id
字段是文本字段。我知道如何强制它成为一个选择字段,但我不知道如何用编程方式用组的名称填充选择。
当前方法:
echo $form->input('group_id', array(
'1' => 'NameOfGroup1',
'2' => 'NameOfGroup2',
'3' => 'NameOfGroup3')
);
我想以编程方式生成options数组。
echo $form->input('group_id', $this->Group->find('list'));
但这不起作用。我收到一个错误:
Undefined property: View::$Group [APP/views/users/add.ctp, line 8]
对我而言,这意味着我无法从用户视图中访问Group
对象。
我怎样才能做到这一点?同样,我想以编程方式执行此操作,以便在我添加组或删除它时进行更新。
编辑:为什么这不起作用?
// In views/users/someaction.ctp
echo $form->input('group_id',
array('options' => $this->formOptionsGroups)
);
// In controllers/users_controller.php
function someaction() {
// Any other logic
$this->set('formOptionsGroups', $this->Group->find('list'));
}
错误是Group是未定义的对象。
答案 0 :(得分:3)
我认为没有必要在您的情况下使用requestAction
功能。因为您可以轻松地在用户控制器中获取组列表,然后将其分配到您需要的用户添加页面。这样会更多优美。
<强> E.g 强>
/*code In the your user-add action of the users controller*/
function useradd()
{
......
//your ownstuff skipped
$grouplist = $this->User->Group->find('list');
$this->set("grouplist",$grouplist);
}
然后在您对useradd操作的看法中:
echo $form->input('group_id', $grouplist);
答案 1 :(得分:0)
问题在于我是如何在控制器中请求操作的。
正确的实施是:
echo $form->input('group_id',
array('options' => $this->requestAction(array('controller' => 'groups', 'action' => 'formSelectOptions')))
);
然后在群组控制器中:
// formSelectOptions() returns array for use with a form $options['options']
function formSelectOptions() {
return $this->Group->find('list');
}