如何为Laravel 4路线设置多种模式?

时间:2013-10-08 01:31:16

标签: laravel laravel-4

我在Laravel 3的一个项目中有这条路线:

Route::get(array('/Home', '/'.rawurlencode ('خانه')), function()
{
    return View::make('home.index');
});

它工作正常,直到我决定将其迁移到Laravel 4.现在在Laravel 4中我收到此错误:

preg_match_all() expects parameter 2 to be string, array given

还有其他方法可以为Laravel 4路线设置多种模式吗?

2 个答案:

答案 0 :(得分:4)

您可以使用where和您的路线

来实现此目的

所以,如果你的路线是,

Route::get('{home}', function()
{
    return View::make('home.index');
})->where('خانه', '(home)?');

您可以使用

访问相同的内容
http://localhost/laravel/home
http://localhost/laravel/خانه

此处http://localhost/laravel/应替换为您的。{/ p>

使用regex是最好的方法,

Route::get('{home}', function()
{
    return View::make('home.index');
})->where('home', '(home|خانه)');

这只会匹配,

http://localhost/laravel/home
http://localhost/laravel/خانه

答案 1 :(得分:0)

您可以在路线中使用正则表达式,所以可能是这样的。

Route::get('(Home|' . rawurlencode('خانه') . ')', function ()
{
    return View::make('home.index');
});

如果这不起作用,我可能只是定义了两个路径,因为闭包很简单。即使它更复杂,您也可以将它移动到控制器并使用相同的控制器方法指向两个路径。