首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CakePHP表单$options['options']

CakePHP表单$options['options']
EN

Stack Overflow用户
提问于 2010-04-08 10:07:21
回答 2查看 730关注 0票数 0

嘿!这里是Total CakePHP新手。

在底部更新/

这是一个两面性的问题。在用于添加user对象的视图中,我希望在表单中使用下拉(选择)字段。

每个user都属于一个group,所以当我添加一个用户时,我想要一个包含该用户可能加入的所有组的下拉列表。目前,group_id字段是一个文本字段。我知道如何强制它成为选择字段,但我不知道如何以编程方式使用组的名称填充选择。

当前的方法是:

代码语言:javascript
运行
复制
echo $form->input('group_id', array(
    '1' => 'NameOfGroup1',
    '2' => 'NameOfGroup2',
    '3' => 'NameOfGroup3')
    );

不过,我希望以编程方式生成选项数组。

代码语言:javascript
运行
复制
echo $form->input('group_id', $this->Group->find('list'));

但这不起作用。我得到一个错误:

代码语言:javascript
运行
复制
Undefined property: View::$Group [APP/views/users/add.ctp, line 8]

对我来说,这意味着我没有从user视图内部访问Group对象的权限。

我如何才能做到这一点呢?同样,我想通过编程来实现,这样它就会随着我添加或删除组而更新。

编辑:为什么这个不起作用?

代码语言:javascript
运行
复制
// 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是一个未定义的对象。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-08 11:32:31

我认为没有必要在你的situation.Because中使用requestAction函数,你可以很容易地在你的用户控制器中获得分组列表,然后将它分配给你的用户-在你需要it.That的地方添加页面会更优雅。

顺便说一句,about requestAction来自食谱:requestAction最好与(缓存的)元素结合使用--作为一种在呈现之前获取元素数据的方法。

例如

代码语言:javascript
运行
复制
/*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操作视图中:

代码语言:javascript
运行
复制
echo $form->input('group_id', $grouplist);
票数 3
EN

Stack Overflow用户

发布于 2010-04-08 10:39:18

问题出在我在控制器中请求动作的方式。

正确的实现是:

代码语言:javascript
运行
复制
echo $form->input('group_id', 
                  array('options' => $this->requestAction(array('controller' => 'groups', 'action' => 'formSelectOptions')))
                  );

然后在groups控制器中:

代码语言:javascript
运行
复制
// formSelectOptions() returns array for use with a form $options['options']
function formSelectOptions() {
    return $this->Group->find('list');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2597108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档