Laravel はルーティングと URL 生成を深く理解しています

WBOY
リリース: 2016-06-23 13:34:43
オリジナル
827 人が閲覧しました

Laravel は URL によって生成およびルーティングします

テンプレートでは、通常、URL を直接記述することはありませんが、URL アシスタントを使用して URL を生成します。この記事では、URL アシスタントの使用方法と、発生するいくつかの問題について紹介します。

まず、ルートを作成しました:

Route::get('articles',['uses'=>'ArticlesController@index','as'=>'articles.index']);
ログイン後にコピー

プロジェクトがドメイン名のルート ディレクトリにデプロイされていると仮定すると、次の URL を通じてアクセスできます:

http://localhost/articles
ログイン後にコピー

次に、テンプレート内にリンクを生成します。いくつかの方法があります。 :

シンプル モード

<a href="{{ url('/articles') }}">链接</a>// or<a href="{{ URL::to('/articles') }}">链接</a>//为了方便阅读,下面省略html标签
ログイン後にコピー

このメソッドは、指定したパスを Web サイトのルート URL に単純に接続します。

ルーティングモード

URL::route('articles.index')
ログイン後にコピー

本メソッドは、登録ルートと照合する際にasパラメータを指定し、登録されたuriを取得するメソッドです。

コントローラーアクションモード

URL::action('ArticlesController@index')
ログイン後にコピー

このメソッドは、ルート登録時に「uses」パラメーターに基づいてコントローラーメソッドにマッピングされた URI を自動的に生成します。ルールは Route::controller() と同じです。
例は次のとおりです:

ArticlesController@index => articlesArticlesController@getAdd => articles/addArticlesController@postAdd => articles/addArticlesController@getDelete => articles/delete
ログイン後にコピー

基本的なチュートリアルはこれで終わりです。いくつかの迷惑な状況に直面しましょう。

さて、ルーティングは次のように定義しました:

Route::controller('users','UsersController');
ログイン後にコピー

簡単なステートメントで、Laravel は自動的に UsersController クラスを反映し、その中のメソッドをスキャンして、通常のマッピングを生成しましょう。例として、コントローラーに次のメソッドがあるとします。

function getIndex();function getEdit();function postEdit();
ログイン後にコピー

実際、Route::controller() による最終結果は次のようになります。

Route::get('users',['uses'=>'UsersController@getIndex']);Route::get('users/edit',['uses'=>'UsersController@getEdit']);Route::post('users/edit',['uses'=>'UsersController@postEdit']);
ログイン後にコピー

率直に言えば、高度なルーティング メソッドは単にカプセル化したものです。基本的な方法。

それでは、URL を生成しましょう:

echo URL::action('UsersController@getEdit');
ログイン後にコピー

希望どおり http://localhost/users/edit を取得しましたが、追加する必要があるクエリ文字列パラメータはどうすればよいでしょうか?これは一般に get パラメータとしても知られています。

http://localhost/users/edit?id=1 を取得したいのですが、どのように生成すればよいでしょうか?

賢い人は、URL::action() に 2 番目のパラメーターがあることに気づきました。これは、url パラメーターとして配列を指定できます。それでは、それを試してみましょう。

そうですか

大丈夫ですか?いいえ!! 取得される内容は次のとおりです:

echo URL::action('UsersController@getEdit',['id'=>1]);
ログイン後にコピー

別のパラメータを追加した場合:

http://localhost/users/edit/1
ログイン後にコピー

取得される内容は次のとおりです:

echo URL::action('UsersController@getEdit',['id'=>1,'author'=>'admin']);
ログイン後にコピー

指定したキーは単に無視され、?id=1&author=admin end として追加されません。 URLの。

なぜですか? ! !

答えを知りたい場合は、引き続きお読みください: Laravel のルーティングと URL 生成についての深い理解

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