2017-08-01 3 views
3

現在、マルチサイトアプリケーション(複数の(サブ)サイト用に1つのコードベース)で作業していますが、ルートキャッシングを利用したいと思いますが、現在は動的ではなくプレフィックスをハードコーディングしていますそれを決定する。Laravel:オプションのルートプレフィックスパラメータ

とき私は、以下に例示しました問題に実行しているよこのやろうとしている:http://sitename.domain.tld/subsitename/blogこのすべてが正常に動作しますが、それは動作しませんのようなサブサイトにアクセスすると

Route::group(['prefix' => '{subsite}', 'subdomain' => '{site}.domain.tld'], function() { 
    Route::get('blog', '[email protected]')->name('blog.index'); 
}); 

をもうありませんhttp://sitename.domain.tld/blogのようなサブサイトにアクセスすると、プレフィックスは「ブログ」と考えるようになります。

'サブサイト'パラメータを空またはスキップできるようにする方法はありますか?

ありがとうございます!

+0

Laravelはオプションのパラメータを持っているが、これらは、リスト内の最後のパラメータとしてのみ使用することができ、私はあなたの最良のオプションは、関数内でオプションのサブサイトを持っているし、2つのルートグループを作成するために必要なすべてのあなたのルートをラップしていると思います、1つはサブサイトと1つなし – milo526

答えて

2

私が知る限り、現在のルーティングシステムには、単一のルートグループで問題を解決できるものはありません。

これはあなたの特定の質問に答えることはできませんが、私は期待されるふるまいを実装する方法が2つ考えられます。

1.予想プレフィックスのアレイを介してルートグループ

Route::group(['subdomain' => '{site}.domain.tld'], function() { 
    Route::get('blog', '[email protected]')->name('blog.index'); 
}); 

Route::group(['prefix' => '{subsite}', 'subdomain' => '{site}.domain.tld'], function() { 
    Route::get('blog', '[email protected]')->name('blog.index'); 
}); 

2ループを複製します。

$prefixes = ['', 'subsiteone', 'subsitetwo']; 

foreach($prefixes as $prefix) { 
    Route::group(['prefix' => $prefix, 'subdomain' => '{site}.domain.tld'], function() { 
     Route::get('blog', '[email protected]')->name('blog.index'); 
    }); 
} 
+1

あなたの応答、Jeemusuありがとう!これらのアプローチの問題は、名前付きルートが互いに上書きするため、 'route( 'blog.index')に行くことは常に最後に定義されたルートにリンクすることです。そして、残念ながら、2番目の方法はルートキャッシングでは機能しません:( – Stidges

+0

ああ、私の間違い!名前はプレフィックスごとに一意になるように変更する必要があります。 – Jeemusu

関連する問題