【问题标题】:yii2 create view to display modelyii2 创建视图以显示模型
【发布时间】:2015-04-22 01:20:57
【问题描述】:

我正在尝试在一个项目中实现 demos.krajee.com/grid-demo,但在为详细视图创建网格时遇到了困难。

它是一个网格,当使用扩展的 expandRow 功能时,我需要从 id 中的另一个表库中获取所有相关记录(主 - 详细方案)

在控制器中,我有这个功能,它可以很好地获取特定 id 的所有记录:

    public function actionDetail() {
    $searchModel = new AttendanceSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    if (isset($_POST['expandRowKey'])) {
        $IDcustomers = Yii::$app->request->post('expandRowKey');

    $model = Attendance::find()
            ->where(['IDcustomers' => $IDcustomers])
            ->all();            
        return $this->renderPartial('_attendance-details', ['model'=>$model]);

    } else {
        return '<div class="alert alert-danger">No data found</div>';
    }
}

现在的问题是如何从 $model 创建视图(_attendance-details)并让所有记录显示在一个网格中。

如果我将 DetailView 与 $model 的第一个元素一起使用可以正常工作:

        <?= DetailView::widget([
    'model' => $model[0],
    'attributes' => [
        'IDattendance',
        'IDcustomers',
        'date',
        'doctor',
        'lawyer',
    ],
]) ?>

但是当我尝试使用网格时,我需要 dataprovider,但我无法让它与我传递的 $model 一起工作。

我对 yii 很陌生,所以任何指南都将不胜感激。


我尝试了vitalik并且工作完美

【问题讨论】:

    标签: gridview grid yii2 master-detail


    【解决方案1】:

    controller 集合中:

    public function actionDetail()
    {        
        if (isset($_POST['expandRowKey'])) {
            $IDcustomers = Yii::$app->request->post('expandRowKey');
    
            $model = Attendance::find()
                ->where(['IDcustomers' => $IDcustomers]);
            $dataProvider = new ActiveDataProvider([
                'query' => $model,
                'pagination' => [
                    'pageSize' => 20,
                ],
            ]);
    
            return $this->renderPartial('_attendance-details', ['dataProvider' => $dataProvider]);
    
        } else {
            return '<div class="alert alert-danger">No data found</div>';
        }
    }
    

    在视图中:

    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            'IDattendance',
            'IDcustomers',
            'date',
            'doctor',
            'lawyer',      
        ],
    ]);?>
    

    【讨论】:

    • 嗨vitalik 感谢您回答这个问题,这让我很生气。您确定可以将模型传递给 activeDataProvider 的查询元素。我无法完成这项工作
    • 是的,这是工作。请参阅文档 - github.com/yiisoft/yii2/blob/master/docs/guide/…
    • 如果在您的应用中不起作用。请将当前的controllerview 发送给您
    • 它完美运行,我没有使用:yii\data\ActiveDataProvider;然后我继续尝试使用 find 中的 all()。非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多