2016-11-19 14 views
0

Я создаю профиль профиля кнопки в gridview. Когда пользователь нажмет профиль просмотра кнопки, он перейдет к профилю на основе user_id. Вот код.Кнопка в gridview yii2

 <?= GridView::widget([ 
'dataProvider' => $dataProvider, 
'id' => 'mygrid', 
'columns' => [ 
    ['class' => 'yii\grid\SerialColumn'], 
    'user_id', 
    'project_name', 
    ['class' => 'yii\grid\ActionColumn'], 
    [ 
     'label' => 'View Profile', 
     'format' => 'raw', 
     'content' => function($model) { 
      return Html::a('View', ['projectstudent/viewprofile', 'id' =>  $model->user_id], 
       ['class' => 'btn btn-primary']); 
     } 
    ], 
] 
]); ?> 

В контроллере

public function actionViewprofile($id) 
{ 
return $this->render('profile', [ 
     'model' => $this->findModel($id), 
    ]); 
} 

Запрашиваемая страница не найдена. Как я могу исправить код? Благодарю.

+0

Является ли контроллер с именем 'ProjectstudentController'? – Bizley

+0

yup @Bizley. Контроллер - Projectstudentcontroller. – Fyp16

+0

Может быть несколько причин: контроллер может быть вызван неправильным способом (быть внутри модуля), правила перезаписи URL-адресов UrlManager или сервера могут быть неправильными, в случае, не относящихся к среде Windows, имя файла может быть неправильным ... Недостаточно информации от вас, чтобы точно сказать. – Bizley

ответ

0

Здесь может возникнуть проблема имени контроллера, указанная u, нет необходимости определять имя контроллера, если вы хотите вызвать действие того же контроллера.

Так заменить так код с этим и попробуйте еще раз

return Html::a('View', ['viewprofile', 'id' =>$model->user_id], 
      ['class' => 'btn btn-primary']);