2011-01-04 3 views
0

私はたくさんの検索をしましたが、まだこれを解決できませんでした。私はユーザー登録フォームを持っています。ここでユーザーは登録時に多数の店舗をお気に入りとして選択できます。私はこの関係をHABTMとして設定しました。CakePHP:複数のチェックボックスのラベルをカスタマイズするにはどうすればいいですか

複数のチェックボックスとしてストアブランチを表示できますが、各チェックボックスのラベルにブランチ名とともにストア名(ストアブランチはストア名に属します)を表示する必要があります。ような何か:

リーバイス - キャナルウォークが支店名、リーバイスストア名であるキャナルウォーク

(別のテーブルから来る)

は、誰もが行う方法にいくつかの洞察を共有してくださいすることができこの?

答えて

0

私はこれをテストしていませんが、それは仕事(または正しい道に沿ってあなたを助ける)ことがあります

$branches = $this->Branch->find('list', array(
    'fields' => array('Branch.id', 'CONCAT(Store.name, " - ", Branch.name)'), 
    'joins' => array(
     array(
      'table' => 'stores', 
      'alias' => 'Store', 
      'type' => 'inner', 
      'foreignKey' => false, 
      'conditions' => array('Branch.store_id' => 'Store.id') 
     ) 
    ) 
)); 

があなたのコントローラでこれを設定するかであなたのモデルに置くことでDRYものを維持findFullList()

などの機能が役立ちます。

0

私はこのすべてをビューで行います。あなたのHABTM関係が正しくセットアップされている場合は、ストアモデルのクエリは、このような動作するはずです:

$stores = $this->Store->findAll(); 
//Returns 
Array([0] => Array(
    'Store' => array(), 
    'Branch' => array(
     [0] => array(), 
     [1] => array()...)); 

を次にビューに変数$店舗を渡し、二重のネストされたループでそれを反復。

foreach($stores as $store){ 
     foreach($store['Branch'] as $branch){ 
      //Code to output checkbox by using $branch['name'] 
     } 
    } 
関連する問題