我正在开发一个程序,该程序是使用Yii2.0的实验室系统的预订服务。我已经使用过Yii一段时间了,但出于某种原因,这个让我感到难过
我在gridview中列出了所有系统,并且我希望在actionColumn中有一个按钮来运行' reserve'操作,然后显示单个系统的视图。
我添加了按钮,它将用户带到了视图页面,但我不知道我需要做什么才能让它先运行保留操作...或者如果它甚至可能。我已经尝试将其指向控制器中的保留操作,但当然会查找视图页面而不是操作。
以下是我查看了许多建议之后我所尝试过的一些代码:
在索引页
['class' => 'yii\grid\ActionColumn',
'template' => '{reserve}',
'buttons' => [
'reserve' => function ($url, $model) {
return Html::a('<span class="glyphicon glyphicon-ok-circle"></span>',
$url,
[
'title' => 'Reserve',
'data-method' => 'post',
'data-pjax' => 0,
]);
}
],
'urlCreator' => function ($action, $model, $key, $index) {
return Url::toRoute(['cml/view', 'id' => $key]);
}
控制器中的功能
public function actionReserve($id)
{
$model = $this->findModel($id);
if ($model->fkReservedTo == 1)
{
$model->fkReservedTo = Yii::$app->user->id;
// shouldn't you call save here
$model->save();
return $this->redirect(['view','id'=>$id]);
}
else
{
Yii::$app->session->setFlash('error', 'This system is not available to be reserved');
return $this->showAlert();
}
}
任何建议都将不胜感激。
答案 0 :(得分:1)
更改
return Url::toRoute(['cml/view', 'id' => $key]);
到
return Url::toRoute(['cml/reserve', 'id' => $key]);
在urlCreator
函数中。