【发布时间】:2014-06-04 14:57:59
【问题描述】:
在 laravel 中是否可以获取调用您当前所在的控制器方法的视图的名称?
我的网站中有两个版本的表单。一个用于在站点“外部”使用(即用户未登录),另一个用于在站点“内部”使用。这些表单在表示上略有不同,但它们包含所有相同的字段并调用相同的存储方法。
有没有办法从我的 store 方法中获取调用该方法的视图的名称?我浏览了文档,但没有看到明确的方法。
【问题讨论】:
在 laravel 中是否可以获取调用您当前所在的控制器方法的视图的名称?
我的网站中有两个版本的表单。一个用于在站点“外部”使用(即用户未登录),另一个用于在站点“内部”使用。这些表单在表示上略有不同,但它们包含所有相同的字段并调用相同的存储方法。
有没有办法从我的 store 方法中获取调用该方法的视图的名称?我浏览了文档,但没有看到明确的方法。
【问题讨论】:
如果它是一个表单,为什么不将视图名称存储在隐藏的输入中,并将其与表单数据的其余部分一起发送。
Form::hidden('view', 'model.index')
我认为没有办法获取当前视图名称,但是当您首先设置要使用的视图时,您可以将视图名称从原始控制器传递给视图:
public function create()
{
$myView = 'model.index';
Return View::make($myView)->with(compact('myView'));
}
然后如上所述,包含视图名称的$myView 变量可用于插入到表单中。
在接收控制器(您的store 方法)中,只需使用Input::get('view') 从表单数据中检索它。
【讨论】:
这就是您实现这一目标的方法。只需在控制器方法中执行此操作,您就可以在该方法中检测发出请求的前一个路由名称。
$url = url()->previous();
$route = app('router')->getRoutes($url)->match(app('request')->create($url))->getName();
if($route == 'route name here') {
return redirect()->back(); //example
}
return view('users.index'); //example
【讨论】: