如何在Yii2中将2个模型加载到单个视图中

时间:2016-05-01 14:47:49

标签: php model-view-controller yii2 yii2-advanced-app

问题
这个问题与Yii2项目有关,当点击用户组名称时,该项目应显示相关的收件人列表。
目前我用gridviews和&amp ;;创建了所有数据库,模型,CRUD代。完美地工作。
但问题是,当我点击网格项时,它导航到另一个视图(默认方式),如下图所示,我想在同一视图的一部分中加载。

enter image description here

用户组(查看 - > index.php)

    <?php Pjax::begin(); ?>
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        //navigate to the relevent recipient list by click on the group name
        'rowOptions' => function ($model, $key, $index, $grid) {
                    return [
                        'style' => "cursor: pointer",
                        'id' => $model['group_id'],
                        'onclick' => 'location.href="'.Yii::$app->urlManager->createUrl('recipient-list/recipients').'&scenario=RECIPIENTS&params="+(this.id);',
                    ];  
                },

        'columns' => [
            'group_id',
            'group_name',

            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>
    <?php Pjax::end(); ?>

我已在rowOptions中提供GridView,以便点击该记录&amp;通过URL导航到收件人列表。然后,这将从控制器&amp;根据{{​​1}}&amp;过滤结果渲染视图。

我想要什么

enter image description here

我想在点击左侧组列表时动态加载收件人列表 我试过了

  • group_id但它无法正常工作。它在浏览器中作为单独的选项卡工作。
  • 为kartik添加了许多Yii导航扩展程序,例如iFrames用于组列表。但问题是它无法从数据库中获取数据。当我创建一个组时,它没有显示在列表中。 (如果侧导航是静态的那么好)
  

所以..我想知道的是,有没有办法用控制器做这个或者是否有任何Jquery代码来支持这个......

热烈欢迎任何建议或参考。

2 个答案:

答案 0 :(得分:3)

您可以使用jQuery .load进行此操作。

假设您的收件人列表容器div的ID为#recipient-list,因此您只需在onclick事件中添加以下内容:

$( "#recipient-list" ).load("YOUR_URL"); return false;
// replace YOUR_URL with the url you are generating already
// and don't forget the return false part. it't there so that link doesn't redirect

答案 1 :(得分:2)

单击该行时,单击事件 你将发出一个ajax请求来检索 第二个网格的数据(收件人列表)

成功或完成ajax请求 你将调用$ .pajax.reload来刷新 像这样的第二个网格中的数据

$.pjax.reload({container:'#recipient-list'});