提问者:小点点

从url获取控制器操作,laravel


我可以从给定的URL获取控制器操作吗?

在我的项目中,我将为管理员和普通用户使用不同的布局。即

something.com/content/list-将显示布局1。

某物com/admin/content/list-将显示布局2。

(但这些需要由同一个控制器生成)

为此,我添加了过滤器来检测模式'admin/*'。现在我需要调用URL其余部分所需的操作('Content/list'或任何将在那里出现的操作)。意思是,可以在admin/之后有任何东西,可以是foo/1/edit(在这种情况下,应该调用foo控制器),也可以是bar/1/edit(在这种情况下,应该调用bar控制器)。这就是为什么控制器名称应该从过滤器捕获的url动态生成,

所以,我想从URL(内容/列表)获取控制器操作,然后从过滤器内部调用该控制器操作。

这能做到吗?


共3个答案

匿名用户

感谢所有参与的人。

我刚刚在另一个线程中找到了问题的解决方案。在这里

这就是我所做的。

if(Request::is('admin/*')) {
    $my_route = str_replace(URL::to('admin'),"",Request::url());

    $request = Request::create($my_route);
    return Route::dispatch($request)->getContent();
}

我在文档中找不到这些方法。所以我希望,这也能帮助其他人。

匿名用户

您可以使用Request::segment(index)获取url的部分/段

// http://www.somedomain.com/somecontroller/someaction/param1/param2
$controller = Request::segment(1); // somecontroller
$action = Request::segment(2); // someaction
$param1 = Request::segment(3); // param1
$param2 = Request::segment(3); // param2

匿名用户

在控制器功能中使用此选项-

if (Request::is('admin/*'))
{
    //layout for admin (layout 2)
}else{
    //normal layout (layout 1)
}