Yii2错误的路线,如控制器/控制器/动作

时间:2017-04-06 20:55:54

标签: yii2 yii2-advanced-app

我面临以下问题:在包含有序记录的表格中,我想在特定位置插入新记录,或将记录复制/移动到另一个位置。

在索引视图中,我在网格视图中定义了其他操作按钮{new} {copy} {move}。单击其中一个路由到一个名为select(controller / select)的新视图,该视图具有同一个表的网格视图,只有两个操作按钮{before} {after},指示记录是应放在上面还是下面选择的记录。

单击其中一个按钮将路由到控制器操作create(如果以前选择为new)或控制器操作copy-move(控制器/创建或控制器/复制移动)。控制器完成其工作并使用$ this-> redirect([' index'])返回索引视图。这很正常。

再次点击索引视图中的一个操作按钮{new} {copy} {move}我看到一条奇怪的路径:controller / controller / select而不是controller / select。仅当我通过刷新浏览器从菜单调用索引视图时,此行为才会停止。

为什么会这样?可能是因为之前在网格视图中选择动作后立即创建网格视图?以及如何避免这种行为?

这是工作流程:

call index view
click on action button {new} {copy} or {move}
create route controller/select
get the select view
in select view click on action button {before} or {after}
create route controller/copy or controller/copy-move
create a new record at the choosen position or copy / move it there
return $this->redirect(['index']) after controller has done his job
in index view again click onto action button {new} {copy} or {move}
create route controller/controller/select instead of controller/select which ends in a 404 error.

2 个答案:

答案 0 :(得分:3)

您遇到相对和绝对网址的问题。在yii2

// relative route: /index.php?r=admin%2Fpost%2Findex
echo Url::to(['post/index']);

// absolute route: /index.php?r=post%2Findex
echo Url::to(['/post/index']);

注意: - 需要正斜杠

了解更多信息see this

答案 1 :(得分:0)

看起来我得到了我的问题的答案。我从视图文件中删除了定义特定操作的所有逻辑,并使用它的路径让kartik网格视图在列的操作部分中生成URL。因此,在index.php中,我有三个操作,每个操作都有自己的路由:{new}路由到新的,{copy}路由复制和{移动}路由移动。

然后我为select.php做了同样的事情,其中​​行为{before}路由到之前和{after}路由到之后。

在控制器中,路由然后被重定向到第一种情况下的选择动作并创建动作resp。第二种情况下的复制 - 移动动作。

这种接缝能够正常工作,我不会再找错路了。

感谢您的帮助。