私のURLは次のとおりです:www.foo.com/some-bar-slug-here/page
上記のスラッグに文字列「bar」が見つかった場合、キャッチするルートを取得できません。
Route::any('{myslug}/page/', array('as'=>'bar-page', 'uses'=>'Controllers\MyBar@index'))
->where('myslug','/bar/');
正規表現を使用する[0-9A-Za-z\-]+
と機能しますが、では機能しません/bar/
。何か案は?
私はそれを動作させました ^([0-9A-Za-z\-]+)?bar([0-9A-Za-z\-]+)?
したがって、更新されたルートコードは次のようになります。
Route::any('{myslug}/page/', array('as'=>'bar-page', 'uses'=>'Controllers\MyBar@index'))
->where('myslug','^([0-9A-Za-z\-]+)?bar([0-9A-Za-z\-]+)?');
ボーナス:大文字と小文字を区別しないようにするために、次のようにします。 ^([0-9A-Za-z\-]+)?(?i)bar([0-9A-Za-z\-]+)?
注:routesファイルのさらに下でこのルートのコピーを使用しているが、別のサブストリングを検索している場合は、の{myslug}
ような別の名前を付ける必要があります{myslug2}
。そうしないと、Laravelはすべてのルートを実行しません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加