2

我在 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 路由设置多个模式?

4

2 回答 2

4

where您可以使用您的路线来实现这一点,

所以如果你的路线是

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

您可以使用相同的访问,

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

这里http://localhost/laravel/应该用你的替换。

使用regex是最好的方法,

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

这只会匹配,

http://localhost/laravel/home
http://localhost/laravel/خانه
于 2013-10-08T04:43:57.897 回答
0

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

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

如果这不起作用,我可能只定义两条路线,因为关闭是如此简单。即使它更复杂,您也可以将其移至控制器并将两条路由指向同一个控制器方法。

于 2013-10-08T04:43:48.253 回答