在我的索引中,我需要显示两个未通过任何关系链接的不同表的结果。我已经通过使用两种不同的搜索模型来做到这一点
/* @var $searchModel app\modules\book\models\BookNewSearch */
/* @var $searchModelOld app\modules\book\models\BookOldSearch */
所以我有两个选项卡,每个选项卡有两个 Gridview,每个选项卡正确显示一个表的结果。
我正在使用一个模块。所以我的路径是module/book/views/book-old和module/book/views/book-new 在这些文件夹中,视图的 php 文件是
查看-old.php
和
查看-new.php
ActionColumn 中使用的按钮和控制器出现问题。我需要一个“选项卡”使用一个控制器(也有不同的链接),另一个使用另一个控制器(总是不同的链接)。
我试过在 ActionColumn 里面
['class' => 'yii\grid\ActionColumn',
'controller' => 'bookold',
它将“bookold”添加到 url 路径的开头。但这给了我找不到第404页。我也试过
'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->controller->id 返回相同的默认控制器。我应该如何进行?
简而言之,我需要更改 url 的最后一部分(旧视图和新视图)并更改控制器。我的控制器是这样的:
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,
]);
}