yii2 GridView中的ActiveColumn。通过模型的地方?

时间:2015-09-02 08:07:26

标签: yii yii2

我正在按下查看按钮创建操作。这是我正在创建的网址

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,但正如我之前所说,我没有在那里通过模型。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我不知道您是否要禁用默认视图和删除按钮(因为您的示例中有错误代码)

但是使用模板,您可以设置应该可用的按钮(已移除{view} {delte}等) 如果一个动作的“控制器”应该不同,我还举例说明。例如对于usermessages,使用控制器“site”,对于其他按钮操作(如果它们不被删除),将使用当前控制器。

[
    '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),
    ]);
}