2016-08-05 13 views
0

私のプロジェクトでは、要素の配列を返す関数があります。これらの要素の配列はimplodeを使用して文字列に変換され、詳細ビューで呼び出されました。ここでは、私の詳細ビューは、1つの行にすべての要素を表示します。 それぞれの配列要素を異なる行の詳細ビューに表示する必要があります。Yii2配列要素を異なる行に詳細表示する

配列要素を返すMy関数。

public function getHazStatement(){ 
     $codes = array(); 
     $pLines = GhsHazStatements::find()->where(['haz_id' => $this->getHazID()])->all(); 
     foreach ($pLines as $pLine){ 
      $codes[] = $pLine->haz_statement; 
      //var_dump($codes); exit(); 
     } 
    // var_dump(); exit(); 
     return implode(', ', $codes); 
    } 

    public function getHazCode(){ 
     $codes = array(); 
     $pLines = GhsHazStatements::find()->where(['haz_id' => $this->getHazID()])->all(); 
     foreach ($pLines as $pLine){ 
      $codes[] = $pLine->haz_code; 
      //var_dump($codes); exit(); 
     } 
    // var_dump(); exit(); 
     return implode(', ', $codes); 
    } 

マイ・ビュー・ファイル詳細ビュー。

[ 
          'label' => $model->getHazCode(), 
          'value' => $model->getHazStatement(), 
          'options' => ['class' => 'table table-striped table-bordered detail-view','style'=> 'width:500px'], 
       ], 

私の出力は、次のとおりです。

click here

私の出力では、私は彼らが詳細ビューに2つの異なる行になりたい...同じ行に2つの要素があることがわかります。どうすればこれを達成できますか?可能な解決策はありますか?

は、あなたのクラスでは、あなたに

+0

正確な問題は何ですか?あなたは行配列を準備する方法を知らないのですか?または行配列をビューに渡す方法は?または、配列をビューの中のテーブル行としてレンダリングする方法はありますか? – oakymax

+0

クラス内の 'GhsHazStatements'と' hasMany'関係を宣言することをお勧めします。この関係を使って 'GhsHazStatements []'を取得し、この配列をビューに渡します。それは非常に簡単です。そして、なぜあなたはcssクラス名(とスタイル!)をビューに渡す必要がありますか? – oakymax

+0

私はすでにhasMany関係を宣言しています。私は複数の配列要素を一度に表示する同じ関数を持っています。そして、私は単一の行と表示..各配列要素を分割する必要があります。これは私の問題です。 –

答えて

0

をありがとう:あなたのconrollerで

public YourClass extends ActiveRecord 
{ 
    ... 

    public function getHazStatemets() 
    { 
     return $this->hasMany(GhsHazStatements::className(), ['haz_id' => '<haz id column name in your class>']); 
    } 
} 

を:あなたのビューで

$this->render('<your view file name>', [ 
    'haz_statements' => $yourClassInstance->getHazStatements()->all(), 
    'options' => ... // try to avoid passing CSS classes to from view controller 
]) 

<?php foreach($haz_statement as $statement) ?> 

<tr> 
    <td> 
     <?= $statement->haz_code ?> 
    </td> 
    <td> 
     <?= $statement->haz_statement ?> 
    </td> 
</tr> 

<?php endforeach; ?> 
関連する問題