私のインデックスでは、関係によってリンクされていない 2 つの異なるテーブルの結果を表示する必要があります。私は2つの異なる検索モデルを使用してそれを行いました
/* @var $searchModel app\modules\book\models\BookNewSearch */
/* @var $searchModelOld app\modules\book\models\BookOldSearch */
したがって、2 つのタブがあり、それぞれが 1 つのテーブルの結果を正しく表示する 2 つの Gridview があります。
モジュールを使用しています。したがって、私のパスはmodule/book/views/book-oldおよびmodule/book/views/book-new です。これらのフォルダー内には、ビューの php ファイルがあります。
ビュー-old.php
と
ビュー-new.php
問題は、ActionColumn で使用されるボタンとコントローラーにあります。1つの「タブ」が1つのコントローラーを使用し(異なるリンクも)、もう1つのコントローラーが別のコントローラーを使用する(常に異なるリンク)必要があります。
私が試したActionColumnの中で
['class' => 'yii\grid\ActionColumn',
'controller' => 'bookold',
URL のパスの先頭に「boookold」を追加します。しかし、それは私に Page 404 not found を与えました。私も試してみました
'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 の最後の部分 (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,
]);
}