2016-05-20 3 views
0

В моем индексе Мне нужно показать результаты двух разных таблиц, которые не связаны никаким отношением. Я сделал это с помощью двух различных моделей поискаYii2: Множественная модель/контроллер в изменении индекса и Url

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

Поэтому у меня есть две вкладки, с двумя Gridview каждая из них результаты, показывающие одной таблицы правильно.

Я использую модуль. Так что мой путь модуля/книга/просмотры/книга старого и модуля/книга/просмотры/книги нового А внутри те папки файлов PHP для представления являются

вид-old.php

и

вид-new.php

Проблемы с кнопкой и контроллером, используемым в ActionColumn. Мне нужна одна вкладка, использующая один контроллер (с разными ссылками тоже), а другой - другой контроллер (всегда разные ссылки).

Внутри 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-> контроллер-> Идентификатор возвращает тот же контроллер по умолчанию. Как я могу продолжить?

Чтобы быть кратким, мне нужно изменить последнюю часть 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, 
    ]); 
} 
+0

Где actionViewOld действие? Где контроллер BookoldController? –

ответ

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; 
     } 
    } 

    ],