laravel 5;存储或视图后重定向到上一节

时间:2017-04-29 09:42:40

标签: redirect laravel-5 routes

我认为这是一个基本问题或问题,但我无法找到解决此问题的任何解决方案,因此我可能会以错误的方式或错误的关键字进行搜索。

我的数据库中有很多文章,有很多方法可以在网站上阅读/编辑它们。 - 访问者可以在列表中看到它们,单击它们并阅读整篇文章 - 注册用户可以在同一列表中看到它们,但是单击它们可以阅读或编辑文章 - 管理员可以看到不同的列表(不同的视图),并编辑或删除它们 并且我确定我会想出一些其他方式来阅读或编辑文章或其他数据。

关键是,如果访问者或用户阅读或编辑过该文章,我希望他们返回自己的文章索引,但如果管理员已阅读或编辑该文章,我希望他回到管理索引。

所以从一开始我就有很多路线:

Route::get('/article'... will display the index of articles
Route::get('/article/{name}'... will display an article
Route::get('/article/{name}/edit'... will display the edit form for the article
Route::post('/article/{name}'... will update the article

对于管理员:

Route::get('/admin/article'... will display the index of article
Route::get('/admin/article/{name}'... will display an article
Route::get('/admin/article/{name}/edit'... will display the edit form for the article
Route::post('/admin/article/{name}'... will update the article

但..Route :: post(' / article / {name}'和Route :: post(' / admin / article / {name}应指向相同的功能更新数据,该函数应该重定向到不同的路由,在这种情况下 Route :: get(' / article' Route :: get(' /管理/物品'

我真的不想写两个不同的例程来存储或更新数据库中的数据,实际上是相同的,除了更新或存储后的重定向' -line。

我的第一个想法是制作2条路线,我的控制器中有两个条目,每个条目都调用保存数据的相同例程,并返回我可以重定向的位置,但之后我将不得不使用不同的'操作&# 39;在我的形式。这意味着我必须制作两个相同的形式,除了'动作' -line。

无论我做什么,在我开始阅读或编辑数据之前,我必须根据我所在网站的某个部分重定向。

我读了一些关于' back()' -function的内容,但这对我没有帮助,因为我希望能够阅读一篇文章,然后选择编辑它,然后返回我的索引。

我希望我能够解释我想做什么,而且我确定我不是唯一一个寻找此事的人,但我再次找不到合适的解决方案。

实现这一目标的最佳方式是什么?!?

1 个答案:

答案 0 :(得分:0)

我只是将普通用户和管理员用户之间的控制器分开。这样,您的代码将保持清洁和易懂。

例如,您可以制作以下文件夹结构:

app
 - Http
  - Controllers
   - Admin
   - User

不要忘记更改控制器中的命名空间。

如果您真的想为两个用户坚持使用相同的控制器,那么您需要制作某种if else语句来查看您正在处理的用户类型并重定向该结果。您的申请中是否有某种角色结构?