获取调用控制器方法的视图的名称


Laravel: Get the name of the view that called the controller method

在laravel中,是否有可能获得当前所处的调用控制器方法的视图名称?

我的网站上有两个版本的表单。一个是用来"外部"的网站(即用户没有登录),另一个是用来"内部"的网站。表单在表示上略有不同,但它们保存所有相同的字段并调用相同的存储方法。

是否有一种方法从我的商店方法中获得调用该方法的视图的名称?我看了一下文档,但没有看到一个明确的方法。

如果它是一个表单,为什么不直接将视图名称存储在一个隐藏的输入中,并将其与其他表单数据一起发送呢?

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