2017-07-16 6 views
0

私はcakePHPを使用してフォームを開発しようとしています。cakephp createデータベースから選択

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

をcreatsは、データがidフィールドとデータベーステーブル「画像」に格納されていることを

<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'と 'file'の目的のテキスト

データベースから選択要素を作成するにはどうすればよいですかオプションテキスト値のid値ではなく、目的のテキスト値を使用していますか?

あなたImagesTableで:

あなたが適切に設定されている表示欄があることを確認してください:あなたのコントローラで

$this->displayField('file'); 

を:あなたのDBからのデータを使用して選択フィールドを作成するには

答えて

0

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

テンプレートファイル:

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

さらに詳しい情報:Form Helper

+0

私はこれます$ this-> displayField( 'ファイル')を置けばいい。 – user3633383

+0

ImagesTable.phpファイルには、src/Model/Tableにある 'initialize()'メソッドが必要です。 'id'フィールドを使用するように設定されている場合は、プライマリ表示フィールドと見なすフィールドに変更します。そうでない場合は、そのメソッドの最後に行を追加してください。 – Szymon

+0

ありがとうございます。実際に自動生成されたコードから変更する必要があったのは、initialize()関数のこの行だけでした。他のすべてはあなたが提案した通りです。それは現在、必要に応じて動作しています! – user3633383

関連する問題