Yii2:索引和URL更改中的多个模型/控制器

时间:2016-05-20 14:56:25

标签: gridview yii2 cactivedataprovider

在我的索引中,我需要显示两个不同的表的结果,这些表没有任何关系链接。 我通过使用两种不同的搜索模型完成了这项工作

/* @var $searchModel app\modules\book\models\BookNewSearch */
/* @var $searchModelOld app\modules\book\models\BookOldSearch */

所以我有两个标签,每个标签都有两个Gridview,每个标签正确显示一个表的结果。

我正在使用模块。所以我的路径是模块/书籍/观看/书籍模块/书籍/观点/书籍新 在这些文件夹中,视图的php文件是

  

视图-old.php

  

视图-new.php

ActionColumn中使用的按钮和控制器出现问题。 我需要一个“tab”使用一个控制器(也有不同的链接),另一个使用另一个控制器(总是不同的链接)。

Inside ActionColumn我试过

                            ['class' => 'yii\grid\ActionColumn',
                             'controller' => 'bookold',

它将“boookold”添加到url路径的开头。但它让我找不到。 我也试过

'buttons' => [
  'view' => function ($url, $model) {
   return Html::a('<span class="glyphicon glyphicon-eye-open"></span>',
   Yii::$app->urlManager->createUrl([Yii::$app->controller->id.'/view-old',
                                                'id' => $model->id]),
                                  ['title' => Yii::t('yii', 'Details'),]);
                                    }],

但是Yii :: $ app-&gt; controller-&gt; id返回相同的默认控制器。 我该怎么办?

为简明起见,我需要更改url的最后一部分(view-old和view-new)并更改控制器。 我的控制器是这样的:

public function actionIndex()
{
    $searchModel = new BookNewSearch();
    $searchModelOld = new BookOldSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    $dataProviderOld = $searchModelOld->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModelOld' => $searchModelOld,
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
        'dataProviderOld' => $dataProviderOld,
    ]);
}

1 个答案:

答案 0 :(得分:0)

在每个网格视图中尝试此操作:

   [  
    'class' => 'yii\grid\ActionColumn',
    'contentOptions' => ['style' => 'width:260px;'],
    'header'=>'Actions',
    'template' => '{view} {delete}',
    'buttons' => [

        //view button
        'view' => function ($url, $model) {
            return Html::a('<span class="fa fa-search"></span>View', $url, [
                        'title' => Yii::t('app', 'View'),
                        'class'=>'btn btn-primary btn-xs',                                  
            ]);
        },
    ],

    'urlCreator' => function ($action, $model, $key, $index) {
        if ($action === 'view') {
            $url ='/controller/view?id='.$model->id;
            return $url;
        }
    }

   ],