Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cakephp从数据库创建选择_Php_Database_Cakephp_Drop Down Menu - Fatal编程技术网

cakephp从数据库创建选择

cakephp从数据库创建选择,php,database,cakephp,drop-down-menu,Php,Database,Cakephp,Drop Down Menu,我正在尝试使用cakePHP开发一个表单 <div class="links form large-9 medium-8 columns content"> <?= $this->Form->create($link) ?> <fieldset> <legend><?= __('Add Link') ?></legend> <?php echo

我正在尝试使用cakePHP开发一个表单

 <div class="links form large-9 medium-8 columns content">
     <?= $this->Form->create($link) ?>
     <fieldset>
         <legend><?= __('Add Link') ?></legend>
    <?php
        echo $this->Form->control('section_id', ['options' => $sections]);
        echo $this->Form->control('link');

        //how do I make this display a text value
        echo $this->Form->control('image_id', ['options' => $images]);

        echo $this->Form->control('active');
        echo $this->Form->control('created_on');
    ?>
     </fieldset>
     <?= $this->Form->button(__('Submit')) ?>
     <?= $this->Form->end() ?>
 </div>

它创建一个select元素

 <select name="image_id" id="image-id">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
 </select>

1.
2.
3.
4.
我想让它显示的是

 <select name="image_id" id="image-id">
      <option value="1">item a</option>
      <option value="2">item b</option>
      <option value="3">item c</option>
      <option value="4">item d</option>
 </select>

项目a
b项
项目c
项目d
请注意,数据存储在数据库表“images”中,id字段为“id”,所需文本为“file”


如何使用所需的文本值而不是选项文本值的id值从数据库中创建select元素?

要使用数据库中的数据创建select字段:

在ImagesTable中:

确保已正确设置显示字段:

$this->displayField('file');
在控制器中:

$images = $this->Images->find("list");
$this->set(compact("images"));
在模板文件中:

$this->Form->control("image_id", ["type" => "select"]);

更多信息:

我应该把这个$this->displayField('file')放在哪里;在ImagesTable.php文件中应该有方法
initialize()
,该文件应该位于src/Model/Table中。可以将其设置为使用“id”字段,如果是,请将其更改为您希望被视为主要显示字段的字段。如果没有,只需在该方法的末尾添加一行即可。谢谢。我需要从自动生成的代码中实际更改的唯一部分是initialize()函数中的这一行。其他一切都已经按照你的建议了。它现在正按预期工作!