Yii2数组元素在详细视图中显示在不同的行中

时间:2016-08-05 09:42:03

标签: arrays yii2 yii2-basic-app detailview

在我的项目中,我有一个返回元素数组的函数。这些元素数组已使用implode转换为字符串,并在详细视图中调用。这里我的详细视图显示了1行中的所有元素。 我希望每个数组元素都显示在不同的详细视图行中。

我的函数返回数组元素。

  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 个答案:

答案 0 :(得分:0)

在你班上:

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

答案 1 :(得分:0)

我不太了解您的问题。

如果要具有两行和信息.. :(例如)

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

但是如果您想要...的列表

当您需要行列表时,这是相同的GridView

无论如何,我希望以下代码能对您有所帮助。 请禁用显示标题(请参见下文)

  $query = GhsHazStatements::find()->where(['haz_id' => $this->getHazID()]);
  $dataProvider = new \yii\data\ActiveDataProvider([
     'query' => $query,
        ]);
  echo yii\grid\GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        'haz_statement',
        'haz_code',
      ],
    'showHeader' => false,
  ]);