获取控制器Laravel内部的当前路线

时间:2018-11-03 13:50:49

标签: php laravel

我在web.php中有几条路线:

Route::get('/','PagesController@index');

Route::get('/contact','PagesController@contact');

以此类推...

我需要在我的PagesController中获得当前的“模块”(索引,联系人或其他信息)。

控制器的代码:

   class PagesController extends Controller
   {
    public function index()
    {
       $menu = new Menu();

       $links = $menu->getMenu();

       //$header=url()->current(); // returns the full url, e.g. http://test.com/
       //$header=Route::current(); // error: Class Route not found

       return view("index",['links'=>$links,'header'=>$header]);
    }
}

例如,$ header应该等于PagesController@index内部的“ /”和$header = "contact"内部的PagesController@contact

我需要将来将拥有的所有模块的通用解决方案。

非常感谢!

1 个答案:

答案 0 :(得分:0)

我还没有机会进行测试,但是您应该可以通过以下方式实现这一目标:

Route::get('/{page?}', function($page = 'index') {
    return app('App\Http\Controllers\PageController')->{$page}($page);
});

基本上,这是将路由设置为具有可选的$page变量。如果未传递页面名称(例如contact),则默认为index

我们最终使用app()助手来调用PageController,然后使用->{$page}()语法来调用动态控制器方法(默认情况下为index)。 / p>

希望这会有所帮助。