2017-07-16 93 views
0

我想用cakePHP开发一个表单。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> 

我希望它显示什么是

<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> 

注意,数据被存储在数据库表“图像”与id字段'id'和'文件'中的所需文本

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

回答

0

要利用你的数据库的数据创建选择字段:

在你ImagesTable:

请确保您有显示字段设置正确:

$this->displayField('file'); 

在你的控制器:

$images = $this->Images->find("list"); 
$this->set(compact("images")); 

在您的模板文件中:

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

更多信息:Form Helper

+0

我应该把这个$这个 - > displayField( '文件'); – user3633383

+0

你的ImagesTable.php文件中应该有'initialize()'方法,它应该位于src/Model/Table中。它可以被设置为使用“ID”字段,如果是这样,则将其更改为字段,以便将其视为主显示字段。如果没有,只需在该方法的末尾添加一行即可。 – Szymon

+0

谢谢。我需要从自动生成的代码中实际更改的唯一部分是initialize()函数中的这一行。其他一切都已按照您的建议。它现在按需要工作! – user3633383