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 生成についての深い理解