2017-08-16 20 views
0

背景CakePHPは私が「医師」と「病院」テーブルを持つデータベース

からチェックボックスのオプションと対応する値を表示します。それらは 'doctor_hospital'テーブルによってリンクされています(多数から多数)。

問題

医師を追加する際に、私は病院を選択するための複数のチェックボックスをしたいです。問題は、オプションとして病院の名前を表示できず、データベースからの値として対応する「ID」です。私は

私ができる最善を試してみましたが、何

は(および任意のエラーを取得しないこと)これです: enter image description here

コード

controller.php

$hospitals = $this->Hcp->Hospitals->find('all', ['fields' => ['id', 'name']]); 

add.ctp

<?php 
    foreach ($hospitals as $hospital) { 
    echo $this->Form->control('hospitals', ['type' => 'select', 
              'multiple' => 'checkbox', 
              $hospital->id => $hospital->name 
              ]); 
      } 
     ?>  

私が欲しいもの

ボックス、ディスプレイ「名前」を選択するが、バックコントローラに対応する「ID」を提出し

+0

は 'の値' => $院内のように....チェックボックスのvalue属性を使用してみてください> ID – Shashikala

+0

は動作しませんでした。 "foreachループの引数が無効です"というエラーが表示されます(そのようなもの) –

答えて

0

まず、HospitalsTable.phpを開いて、displayFieldが "名前"プロパティ(モデルを焼いた場合)に設定されているかどうかを確認します。

$hospitals = $this->Hcp->Hospitals->find("list"); 
$this->set(compact("hospitals")); 

そして最後に、あなたのテンプレートファイルに:

echo $this->Form->control("hospitals._ids", ["type" => "select", "multiple" => "checkbox"]); 

それはあなたが欲しいものを生成する必要があります

次は、お使いのコントローラで、 "リスト" ファインダーを使用しています。

さらに詳しい情報:CakePHP 3.x Forms

+0

動作しませんでした。同じことをまだ示しています。 Displayfieldは「名前」です。 –

+0

これは正しい方法であり、望ましい結果が得られるはずです。ベアボーンの例を確認することをお勧めします。これはチュートリアルにあります:https://book.cakephp.org/3.0/ja/tutorials-and-examples/bookmarks/intro.html – Szymon

+0

おっと!ごめんなさい。それはうまくいった。私の悪い。 –

関連する問題