2015-09-02 2 views
1

Я создаю действие при нажатии кнопки просмотра. Это URL, который я создаюyii2 ActiveColumn в GridView. Где пройти модель?

return Url::to(['site/usermessages?id='.$model->ID]); 

Проблема, с которой я столкнулся в том, что я не могу понять, куда возвращать текущую модель для этого созданного сайта, может кто-нибудь дать мне совет?

 'buttons' => [ 
       //view button 
       'delete' => 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') { 
        return Url::to(['site/usermessages?id='.$model->ID]); 
       } 
      } 

Я хочу просто отобразить текст на новом рендеринговом сайте. например, в site/usermessages?id=2 Я хотел бы echo $model->text, но, как я уже говорил, я не получил, где можно взять модель. Благодарим за помощь.

+0

вы жестко прописывать свои URLs. вы должны генерировать URL-адреса следующим образом: 'Url :: to (['site/usermessages', 'id' => $ model-> id])' – deacs

ответ

1

Я не знаю, если вы хотите, чтобы отключить вид по умолчанию и удалять кнопки (потому что вы missleading кода в вашем примере)

но с шаблоном вы можете установить кнопки, которые должны быть доступны (удален {вид } {delte} и т. д.) , и я также дам вам пример, если «контроллер» должен отличаться для одного действия. например для использования используется «сайт» контроллера, а для других действий кнопок (если они не будут удалены) будет использоваться текущий контроллер.

[ 
    'class' => 'yii\grid\ActionColumn', 
    'header'=>Yii::t('app', 'Actions'), 
    'template' => '{usermessages}', 
    'buttons' => [ 
     'usermessages' => 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 ==='usermessages') { 
      return Yii::$app->getUrlManager()->createUrl(['site/'.$action, 'id' => $key]); 
     } else { 
      return Yii::$app->getUrlManager()->createUrl([$action, 'id'=>$key]); 
     } 
    }, 
], 

ваш код контроллера

public function actionUsermessages($id) 
{ 
    return $this->render('usermessages', [ 
     'model' => $this->findModel($id), 
    ]); 
} 
+0

любая идея, почему существует неизвестный метод: app \ controllers \ Ошибка SiteController :: createUrl() ''? –

+0

исправил это, была моя ошибка, у меня была функция в моем расширенном базовом контроллере. – BHoft

+0

okey это работает, но все же я думаю, что вы не понимали мой вопрос, или я просто не уточнил его достаточно. Теперь код генерирует url exacly, как и раньше. И проблема в том, что я не понимаю: например, я нажимаю на строку 2, я хотел отобразить новый сайт, который показывает эту всю информацию о row2. Okey генерирует url с моим сайтом, он вызывает контроллер, который является public function actionUsermessages() { возвращает $ this-> render ('usermessages'); }. Прежде чем я делал объект ($ model) в контроллере, и я передавал его с возвратом. Теперь я хотел передать $ model из этой строки2 на новый отображаемый сайт. –

Смежные вопросы