0

我最近开始研究 CakePHP——到目前为止我很喜欢。但是,我需要问一个相当简单的问题:

这是关于模型关联的。我有 2 个模型用户和组。一个用户可以有多个组,一个组只能有一个用户。所以我做了这样的:

<?php
class Group extends AppModel {
    var $name = 'Group';
    var $belongsTo = 'User'; 
}
?>

<?php
class User extends AppModel {
    var $name = 'User';
    var $hasMany = 'Group'; 
}
?>

然后在添加组页面上,我希望可以从下拉列表中选择用户。我的组添加视图如下:

<h1>Add Group</h1>
<?php
echo $this->Form->create('Group');
echo $this->Form->input('user_id');
echo $this->Form->input('name');
echo $this->Form->input('pincode');
echo $this->Form->input('private');
echo $this->Form->end('Create group');
?>

user_id 会自动转换为下拉列表 - 但是没有任何选项。我需要做什么?我假设我需要放置一个应该从用户表中获取“名称”的地方。

4

2 回答 2

1

我终于在文档(http://book.cakephp.org/view/1390/Automagic-Form-Elements)中找到了答案。

解决方案是: add 方法中的组控制器:

$this->set('users', $this->Group->User->find('list'));

在视图中:

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

很好很简单。不管怎么说,还是要谢谢你!

于 2011-10-12T19:59:21.060 回答
0

您应该在 Group 控制器的 add-group 函数中设置一个变量:
$users = $this->Group->User->find('all', array('fields' => array('DISTINCT User.user_id')));
$this->set('user_ids', $users);

然后在视图中,像这样创建输入:
echo $this->Form->input('user_id', array('options' => $user_ids));

于 2011-10-12T19:45:21.517 回答