Yii2 Basi c - Как отобразить таблицу данных в цикле с использованием модели? - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь отобразить все oop данных (в виде таблицы) для дочерних данных, которые будут отображаться в родительском представлении. Ниже приведен код для табличного представления:

// отображать дочерние данные l oop

<div class="col-md-6 col-xs-12">
    <div class="box">
        <div class="box-header">
            <h3 class="box-title">Details</h3>
        </div>

        <div class="box-body">
            <div class="table-responsive">
                <table class="table table-bordered table-striped">
                    <thead>
                        <tr>
                            <th class="text-center">Code</th>
                            <th>Part Number</th>
                            <th>Quantity</th>
                            <th>Size</th>
                            <th>Description</th>
                        </tr>
                    </thead>

                    <tbody>
                    <?php
                    foreach($modelsMaintenanceItem as $i => $modelMaintenanceItem)
                    {
                    ?>
                        <tr>
                            <td class="text-center"><?php echo $modelMaintenanceItem->Code; ?></td>
                            <td class="text-center"><?php echo $modelMaintenanceItem->Part_Number; ?></td>
                            <td class="text-center"><?php echo $modelMaintenanceItem->Quantity; ?></td>
                            <td class="text-center"><?php echo $modelMaintenanceItem->Size; ?></td>
                            <td class="text-center"><?php echo $modelMaintenanceItem->Description; ?></td>
                        </tr>
                    <?php
                    }
                    ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>

Внутри контроллера для функции actionView, код приведен ниже:

public function actionView($id)
{
    $searchModel = new MaintenanceSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    // $model = new Maintenance();
    $modelsMaintenanceItem = [new MaintenanceItem]; //pass model to be use in view page

    return $this->render('view', [
        'model' => $this->findModel($id),
        'modelsMaintenanceItem' => $this->findModel($id),
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
        // 'modelsMaintenanceItem' => (empty($modelsMaintenanceItem)) ? [new MaintenanceItem] : $modelsMaintenanceItem //pass model to be use in view page
    ]);
}

Помогите мне, пожалуйста ... Я застрял здесь. Я думаю, что мне нужно сделать некоторые изменения в контроллере для функции actionView, о 'modelsMaintenanceItem', но я не уверен, что мне там поставить.

1 Ответ

1 голос
/ 07 января 2020

Если вы действительно хотите получить доступ к моделям dataProvider, вам следует использовать
$models = $dataProvider->getModels(); и html код внутри foreach, предложить также эхо-код кода html или использовать альтернативный синтаксис для управляющих структур, например: <?php foreach(...) : ?> ... <?php endforeach; ?> синтаксис, например:

   <?php
        $models = $dataProvider->getModels(); 
        foreach($models as $i => $modelMaintenanceItem):
  ?>
        <tr>
            <td class="text-center"><?php echo $modelMaintenanceItem->Code; ?></td>
            <td class="text-center"><?php echo $modelMaintenanceItem->Part_Number; ?></td>
            <td class="text-center"><?php echo $modelMaintenanceItem->Quantity; ?></td>
            <td class="text-center"><?php echo $modelMaintenanceItem->Size; ?></td>
            <td class="text-center"><?php echo $modelMaintenanceItem->Description; ?></td>
        </tr>
  <?php endforeach; ?>

В любом случае, самый простой способ показать таблицу в Yii2 основан на gridview

<?php  
 use yii\grid\GridView;

?>

...

<?php  

  echo GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'Code',
            'Part_Number',
            'Quantity',
            'Size',                
            'Description',    
        ],
]); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...