我在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路线设置多种模式吗?
答案 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');
});
如果这不起作用,我可能只是定义了两个路径,因为闭包很简单。即使它更复杂,您也可以将它移动到控制器并使用相同的控制器方法指向两个路径。