2017-05-31 11 views
0

私はcakephp v3に取り組んでいます。私は問題に直面している。 私はチェックボックスのループを表示したいが、私が得ているデータはjsonにある。cakephp 3 pass jsonチェックボックス

コントローラ

public function add() { 
     $building = $this->Buildings->newEntity(); 
     if ($this->request->is('post')) { 
      $building = $this->Buildings->patchEntity($building, $this->request->data); 
      if ($this->Buildings->save($building)) { 
       $this->Flash->success(__('The building has been saved.')); 
       return $this->redirect(['action' => 'index']); 
      } else { 
       $this->Flash->error(__('The building could not be saved. Please, try again.')); 
      } 
     } 
     $countries = $this->Buildings->Countries->find('list'); 
     $this->loadModel("Amenities"); 
     $amenities = $this->Amenities->find('All'); 
     $this->set(compact('building', 'countries','amenities')); 
     $this->set('_serialize', ['building','amenities']); 
    } 

ビュー

foreach ($amenities as $key => $value) { 
        echo $this->Form->control($value, ['type' => 'checkbox']); 
       } 

、出力が

enter image description here

である私は、FOLで出力したいです低い方法。

Amenities 

[checkbox] [checkboxname] [fa-icon] 

[checkbox] [checkboxname] [fa-icon] 

[checkbox] [checkboxname] [fa-icon] 
// so on 

これをどのように実現できますか。

私はcontrolへの最初のパラメータは、フィールド名である次のコード

echo $this->Form->input('country_id', ['options' => $countries, 'empty' => 'Select country']); 
+0

'$ data = json_decode($ your_json_string、TRUE);'これは配列を返すので、必要に応じて配列を反復することができます。 – Sam

+0

はい、私は 'json_decode'を使うことができますが、私は' selectbox'のために使用したデフォルトの 'cakephp'の方法を探しています。 –

+0

これに応じて問題を適切に更新してください。明らかに、あなたが試したものと探しているものを明記してください。 – Sam

答えて

0

でオプションを設定することができました。あなたはエンティティを渡しています。エンティティは、それがどのようにして最善の方法で文字列に変換されています。あなたはおそらく$value->nameを使うつもりですか?