Laravel组合路线

时间:2014-02-12 10:05:11

标签: php laravel laravel-4

我在routes.php中有任何路由可以重定向以显示index.blade.php视图。

我的路线如下:

Route::get('admin/index', array('as'=>'dashboard', function()
{
    return View::make('back_end.layouts.index');
}));

Route::get('admin', array('as'=>'dashboard', function()
{
    return View::make('back_end.layouts.index');
}));

Route::get('index', array('as'=>'dashboard', function()
{
    return View::make('back_end.layouts.index');
}));

我想将这些路线组合起来:

Route::get(array('index','admin/index','admin'), array('as'=>'dashboard', function()
{
    return View::make('back_end.layouts.index');
}));

2 个答案:

答案 0 :(得分:1)

您可以使用正则表达式来过滤路线:

Route::get('{page}', function()    
{
    return View::make('back_end.layouts.index');
})->where('page', 'index|admin/index|admin');

但是你不能在3条不同的路线上使用相同的名称,如果你有相同的名字,Laravel如何选择一个呢?

答案 1 :(得分:0)

你真的在问错误的问题。你发现自己的情况是你想要三个完全不同的URI作为一个。

您真正想要的是仪表板的一条规范路线,以及重定向到该路线的另外两条路线。

因此,您的路线文件更好:

<?php

// one true canonical route
Route::get('admin', array('as'=>'dashboard', function()
{
    return View::make('back_end.layouts.index');
}));

// two routes to redirect to dashboard
Route::get('index', function()
{
    return Redirect::route('dashboard');
});
// two routes to redirect to dashboard
Route::get('admin/index', function()
{
    return Redirect::route('dashboard');
});

那就是说,你甚至不必关心那些额外的路线,因为你永远不会把它们联系起来,所以他们只是帮助直接打字的人,这是相对不太可能的。