Yii 2 url动作

时间:2016-04-21 07:18:43

标签: php yii2 yii2-basic-app

我有一个简单的问题,也许是一个白痴,但是可以在另一个问题中采取行动吗? 我有一个' 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。

我真的需要帮助

1 个答案:

答案 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]);
....

或者你应该重新安排代码,以便在你的控制器中分割更多控制器/动作函数所需的动作