2017-07-16 91 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