如何使用CakePHP中的数据库值填充下拉列表

时间:2011-02-20 17:45:27

标签: cakephp

我是CakePHP的新手。能否请您解释一下使用数据库中的值填充选择下拉列表所需的步骤。还请建议我参考的一些链接。

5 个答案:

答案 0 :(得分:4)

简单,如果它是控制器中的相关模型,则将“list”传递给find();一个蛋糕将成为一个id =>值数组,表单助手将确切知道如何处理它。

例如,您想要获取产品型号的类别列表,这在您的控制器中:

$categories = $this->Product->Categories->find('list');
$this->set(compact('categories'));

然后在你的视图中使用表单助手,只需创建select元素,通常会输入任何内容:

$form->input('category_id');

表单助手将自动加载我们使用$ this-> set()设置的$ categories变量。

答案 1 :(得分:3)

您在数据库中进行查找,然后通过控制器中的$this->set(yourvariable)设置变量。

在视图中,您可以在select标记

中使用“yourvariable”

Fill select 1

Fill select 2

Fill select 3

答案 2 :(得分:2)

用一种非常少的努力来实现这一目标

 $this->set('arrMain',$this->Post->find('list',
                                            array(
                                                'fields'=>array('id','title')
                                                )));

将输出设为==>

<select id="UserAge" name="data[User][Age]">
<option value="1">The title</option>
<option value="2">A title once again</option>
<option value="3">Title strikes back</option>

答案 3 :(得分:1)

你在控制器中执行

$this->loadModel('MyModel'); //if it's not already loaded
$options = $this->MyModel->find('all'); //or whatever conditions you want
$this->set('options',$options);

并在视图中

<select...>
  <?php foreach ($options as $option): ?>
    <option value="<?php echo $option['MyModel']['id']; ?>"><?php echo $option['MyModel']['field']; ?></option>
</select>

答案 4 :(得分:1)

示例

控制器类

中的

$categories = $this->Articles->find('list')->select(['id', 'title'])->toArray();

$this->set(compact('categories')); // pass result dataset to the view

在您的视图文件中

<?php echo $this->Form->select('articles_categories_id', $categories); ?>
  

阅读来源   http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html