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');
});

それが機能しない場合は、クロージャーが非常に単純であるため、おそらく 2 つのルートを定義するだけです。より複雑な場合でも、コントローラーに移動して、同じコントローラー メソッドで 2 つのルートを指すことができます。

于 2013-10-08T04:43:48.253 に答える