Laravelフレームワークのルーティング構成の概要と設定のヒント

高洛峰
リリース: 2016-12-27 11:12:49
オリジナル
1503 人が閲覧しました

基本ルーティング

アプリケーションのルートの大部分は app/routes.php ファイルで定義されます。 Laravel の最も単純なルートは、URI とクロージャー呼び出しで構成されます。

基本的なGETルート

<span style="font-size: 16px;">Route::get(&#39;/&#39;, function()<br/>{<br/>return &#39;Hello World&#39;;<br/>});<br/></span>
ログイン後にコピー

基本的なPOSTルート

<span style="font-size: 16px;">Route::post(&#39;foo/bar&#39;, function()<br/>{<br/>return &#39;Hello World&#39;;<br/>});<br/></span>
ログイン後にコピー

すべてのHTTPメソッドに応答するルートを登録します

<span style="font-size: 16px;">Route::any(&#39;foo&#39;, function()<br/>{<br/>   return &#39;Hello World&#39;;<br/>});<br/></span>
ログイン後にコピー

HTTPS経由でアクセスされるルートを強制します

<span style="font-size: 16px;">Route::get(&#39;foo&#39;, array(&#39;https&#39;, function()<br/>{<br/>    return &#39;Must be over HTTPS&#39;;<br/>}));<br/></span>
ログイン後にコピー

頻繁に必要になるURL::to メソッドを使用して URL を生成できます。

<span style="font-size: 16px;">$url = URL::to(&#39;foo&#39;);<br/></span>
ログイン後にコピー

ルーティング パラメータ

<span style="font-size: 16px;">Route::get(&#39;user/{id}&#39;, function($id)<br/>{<br/>return &#39;User &#39;.$id;<br/>});<br/></span>
ログイン後にコピー

オプションのルーティング パラメータ

<span style="font-size: 16px;">Route::get(&#39;user/{name?}&#39;, function($name = null)<br/>{<br/>return $name;<br/>});<br/></span>
ログイン後にコピー

オプションのルーティング パラメータ

<span style="font-size: 16px;">Route::get(&#39;user/{name?}&#39;, function($name = &#39;John&#39;)<br/>{<br/>return $name;<br/>});<br/></span>
ログイン後にコピー

(デフォルト値あり) 正規表現の制約付きルート

<span style="font-size: 16px;">Route::get(&#39;user/{name}&#39;, function($name)<br/>{<br/>//<br/>})<br/>->where(&#39;name&#39;, &#39;[A-Za-z]+&#39;);<br/>Route::get(&#39;user/{id}&#39;, function($id)<br/>{<br/>//<br/>})<br/>->where(&#39;id&#39;, &#39;[0-9]+&#39;);<br/></span>
ログイン後にコピー

ルート フィルター

ルート フィルターは、指定されたルートへのアクセスを制限する簡単な方法を提供します。これは、認証が必要なサイトのゾーンを作成する必要がある場合に非常に便利です。 Laravel フレームワークには、auth フィルター、auth.basic フィルター、ゲスト フィルター、csrf フィルターなどのいくつかのルーティング フィルターが含まれています。これらは app/filters.php ファイルに保存されます。

ルートフィルターを定義する

Route::filter(&#39;old&#39;, function()
{
if (Input::get(&#39;age&#39;) < 200)
{
return Redirect::to(&#39;home&#39;);
}
});
ログイン後にコピー

ルートフィルターから応答が返された場合、この応答はこのリクエストに対する応答とみなされ、ルートは実行されず、このルートに関連する後続のフィルターもキャンセルされます。 。 埋め込む。

Route::get(&#39;user&#39;, array(&#39;before&#39; => &#39;old&#39;, function()
{
return &#39;You are over 200 years old!&#39;;
}));
ログイン後にコピー

ルートのルートフィルタを指定します

Route::get(&#39;user&#39;, array(&#39;before&#39; => &#39;auth|old&#39;, function()
{
return &#39;You are authenticated and over 200 years old!&#39;;
}));
ログイン後にコピー

ルートフィルタのパラメータを指定します

Route::filter(&#39;age&#39;, function($route, $request, $value)
{
//
});
Route::get(&#39;user&#39;, array(&#39;before&#39; => &#39;age:200&#39;, function()
{
return &#39;Hello World&#39;;
}));
ログイン後にコピー

ルートフィルタが3番目のパラメータとして応答を受け取るとき $response:

Route::filter(&#39;log&#39;, function($route, $request, $response, $value)
{
//
});
ログイン後にコピー

基本的なルートフィルタのモード

URI に基づいてルートのセットのフィルターを指定します。

Route::filter(&#39;admin&#39;, function()
{
//
});
Route::when(&#39;admin/*&#39;, &#39;admin&#39;);
ログイン後にコピー

上記の例では、admin/ で始まるすべてのルートに管理フィルターが適用されます。アスタリスクはワイルドカード文字として機能し、すべての文字の組み合わせに一致します。

HTTP メソッドを指定してパターン フィルターを制限することもできます。

Route::when(&#39;admin/*&#39;, &#39;admin&#39;, array(&#39;post&#39;));
ログイン後にコピー

フィルター クラス

高度なフィルターの場合、クロージャー関数の代わりにクラスを使用できます。フィルター クラスはアプリケーションの外部に存在する IoC コンテナーであるため、フィルター内で依存関係の注入を使用でき、テストが容易になります。

フィルタークラスを定義する

class FooFilter {
public function filter()
{
// Filter logic...
}
}
ログイン後にコピー

クラスベースのフィルターを登録する

Route::filter(&#39;foo&#39;, &#39;FooFilter&#39;);
ログイン後にコピー

名前付きルート

名前付きルートを使用すると、リダイレクトや URL を生成するときにルートを簡単に指定できます。次のようにルートの名前を指定できます:

Route::get(&#39;user/profile&#39;, array(&#39;as&#39; => &#39;profile&#39;, function()
{
//
}));
ログイン後にコピー

コントローラー メソッドのルート名も指定できます:

  Route::get(&#39;user/profile&#39;, array(&#39;as&#39; => &#39;profile&#39;, &#39;uses&#39; => 
&#39;UserController@showProfile&#39;));
ログイン後にコピー

URL またはリダイレクトを生成するときにルート名を使用できるようになりました:

$url = URL::route(&#39;profile&#39;);
$redirect = Redirect::route(&#39;profile&#39;);
ログイン後にコピー

currentRouteName メソッドを使用できますルートの名前を取得するには:

$name = Route::currentRouteName();
ログイン後にコピー

Route group

ルートのグループにフィルターを適用したい場合があります。各ルートにフィルターを指定する必要はなく、ルート グループを使用できます:

Route::group(array(&#39;before&#39; => &#39;auth&#39;), function()
{
Route::get(&#39;/&#39;, function()
{
// Has Auth Filter
});
Route::get(&#39;user/profile&#39;, function()
{
// Has Auth Filter
});
});
ログイン後にコピー

サブドメイン ルーティング

Laravel ルーティングはワイルドカード サブドメインを処理し、ドメイン名からワイルドカード パラメーターを取得することもできます:

サブドメイン ルーティングを登録する

Route::group(array(&#39;domain&#39; => &#39;{account}.myapp.com&#39;), function()
{
Route::get(&#39;user/{id}&#39;, function($account, $id)
{
//
});
});
ログイン後にコピー

ルート プレフィックス

属性配列の prefix オプションを使用して、ルートのグループにプレフィックスを付けることができます:

ルート グループにプレフィックスを追加します

Route::group(array(&#39;prefix&#39; => &#39;admin&#39;), function()
{
Route::get(&#39;user&#39;, function()
{
//
});
});
ログイン後にコピー

ルート モデル バインディング

モデル バインディングは、ルートにプレフィックスを追加する簡単な方法を提供しますモデル。たとえば、ユーザーの ID を単に注入するのではなく、指定された ID に基づいてユーザー モデル インスタンス全体を注入できます。まず、Route::model メソッドを使用して、必要なモデルを指定します:

変数をモデルにバインドします

Route::model(&#39;user&#39;, &#39;User&#39;);
ログイン後にコピー

次に、{user} パラメータを含むルートを定義します:

Route::get(&#39;profile/{user}&#39;, function(User $user)
{
//
});
ログイン後にコピー

{user} パラメータはすでにバインドされているため、 User モデルに追加すると、User インスタンスがルートに挿入されます。したがって、たとえば、profile/1 のリクエストは ID 1 の User インスタンスを挿入します。

注: このモデル インスタンスがデータベース内に見つからない場合、404 エラーが発生します。

見つからない独自の動作を指定したい場合は、モデルメソッドの 3 番目のパラメータとしてクロージャを渡すことができます:

Route::model(&#39;user&#39;, &#39;User&#39;, function()
{
throw new NotFoundException;
});
ログイン後にコピー

独自のメソッドを使用してルートパラメータを処理したい場合は、Route を使用できます: :bind メソッド:

Route::bind(&#39;user&#39;, function($value, $route)
{
return User::where(&#39;name&#39;, $value)->first();
});
ログイン後にコピー

404 エラーをトリガーする

ルーティングで 404 エラーを手動でトリガーするには 2 つの方法があります。まず、App::abort メソッドを使用できます:

App::abort(404);
ログイン後にコピー

次に、SymfonyComponentHttpKernelExceptionNotFoundHttpException のインスタンスをスローできます。

404 例外の処理とこれらのエラーに対するカスタム応答の使用の詳細については、「エラー」の章を参照してください。

コントローラーへのルーティング

Laravel では、クロージャーだけでなくコントローラークラスにもルーティングでき、さらにリソースコントローラーの作成も可能です

詳細については、コントローラーのドキュメントを参照してください。

Laravel フレームワークのルーティング構成の概要と設定のヒントに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート