GridView中的yii2 ActiveColumn。模型在哪里通过?

GridView中的yii2 ActiveColumn。模型在哪里通过?,yii,yii2,Yii,Yii2,我正在按查看按钮创建一个操作。这是我正在创建的URL return Url::to(['site/usermessages?id='.$model->ID]); 我面临的问题是,我无法理解如何将当前模型返回到生成的站点, 谁能给我一些建议吗 'buttons' => [ //view button 'delete' => function ($url, $model) {

我正在按查看按钮创建一个操作。这是我正在创建的URL

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]);
                }
            }
“按钮”=>[
//查看按钮
'delete'=>函数($url$model){
返回Html::a('View',$url[
'title'=>Yii::t('app','View'),
'class'=>'btn btn主btn xs',
]);
},
],
“urlCreator”=>函数($action、$model、$key、$index){
如果($action==='view'){
返回Url::to(['site/usermessages?id='.$model->id]);
}
}
我只想在新的渲染站点中显示文本。例如,在
site/usermessages?id=2
中,我想
echo$model->text
,但正如我之前所说,我不知道在哪里传递模型。
谢谢您的帮助。

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

但是使用模板,您可以设置应该可用的按钮(删除{view}{delte}等) 我还举了一个例子,如果“控制器”对于一个动作应该是不同的。e、 g.对于用户消息,将使用控制器“站点”,对于其他按钮操作(如果它们不会被删除),将使用当前控制器

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

您正在对URL进行硬编码。您应该按如下方式生成Url:
Url::to(['site/usermessages',id'=>$model->id])
知道为什么会有一个,调用未知方法:app\controllers\SiteController::createUrl()''错误吗?修复了它,是我的错误吗?我的扩展基控制器中有一个函数。好吧,它可以工作,但我仍然认为你没有理解我的问题,或者我只是没有充分说明它。现在代码像以前一样生成url。我不了解的问题是:例如,我在第2行按下按钮,我想显示显示所有第2行信息的新站点。好的,它用我的站点生成url,它调用控制器,该控制器是公共函数actionUsermessages(){return$this->render('usermessages');}。在我在控制器中创建对象($model)之前,我要用return传递它。现在,我想将$model从第2行传递到新显示的站点。您想要的是在actionUsermessages中呈现一些内容吗?我正要创建类似post的内容,您可以在gridView列(在messages.php中)中看到文本的开头但当你按view时,它会将你移动到新网站,不仅显示开始,还显示整个对话。我只是不知道如何将当前按下的$model移动到新站点(usermessages.php),以便在那里获得所有信息。
public function actionUsermessages($id)
{
    return $this->render('usermessages', [
        'model' => $this->findModel($id),
    ]);
}