我有一个简单的问题,也许是一个白痴,但是可以在另一个问题中采取行动吗? 我有一个' Administration'控制器和' actionUser'。此操作允许管理员管理应用程序的用户。所有用户都使用gridview显示,并在' ActionColumn'查看和编辑用户是可能的。
我的问题是:是否可以在actionUser中管理actionView。
谢谢!
--- --- EDIT
我有actionUsers,它为dataView和分页管理dataProvider。此操作(暂时)不接收任何参数。我想在此操作中管理用户的视图和编辑。要调用此操作,我必须获取网址administration/users
,当我点击按钮查看用户时,我administration/users/view?id=1
我想在我的行动中添加参数
public function actionUsers($action, $id)
但是当我想显示所有用户时它失败了。然后奇怪的是?id = 1因为视图不被视为参数,而是控制器用户中的动作(我认为)。唯一的参数是id for now。
我真的需要帮助
答案 0 :(得分:1)
一种方法是基于actionColumn,在gridview actionColumn中你可以这样自定义你的actionButton
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'yuor_field1',
.......
.......
['class' => 'yii\grid\ActionColumn',
'contentOptions' => ['style' => 'width:34px; font-size:22px;'],
'template' => '{view}',
'buttons' => [
'view' => function ($url, $model) {
return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [
'title' => 'view user',
]);
}
],
'urlCreator' => function ($action, $model, $key, $index) {
if ($action === 'view') {
$url = Url::to(['/administration/user/view', 'id' =>$model->id]);
return $url;
}
}
]
用于调用actionUser(带有两个参数)
public function actionUsers($action, $id)
你应该以这种方式将$ action和$ id传递给你
if ($action === 'view') {
$url = Url::to(['/administration/user/view', action'=> 'your_action', 'id' =>$model->id]);
....
或者你应该重新安排代码,以便在你的控制器中分割更多控制器/动作函数所需的动作