はじめに
下記のようにweb.php内のルーティングの設定時に、nameメソッドを使用する用途目的と処理の流れを理解するのためにまとめてみる。
Route::get('/test/', 'ArticleController@index')->name('testpage');
【さきに結論】
ルーティング側でname()メソッドを設定したら、view側でroute()メソッドの引数にname()メソッドと同じ引数を使用できる。
今回welcome.blade.phpのview側のHTMLのリンクタグ<a href=""></a>
でrouteメソッド利用時に引数にurl名をnameメソッドの引数を当てることができることを確認。
なお、viewのテンプレートへのURLの記述をパス表記でなく、name()メソッドで決めた名前を設定することで、ローティングとビューの設定値が同じため、見やすく確認しやすくなり管理しやすくなる。
【利用条件】
Laravel 6
URLのlocalhost:8009がトップページ('/')を表示
【確認】
まず、nameメソッドがない場合の動きを確認
Route::get('/test/', 'ArticleController@index')
URLの/test/にアクセスすると
ArticleControllerクラスの
indexメソッドが処理され実行し、
indexメソッドはindex.blade.phpを表示させる
【関係ファイル】
1.web.php
2.ArticleController.php
3.index.blade.php
4.welcome.blade.php
【処理の流れを確認】
welcom.blade.phpにあるリンク(<a href=""></a>
)をクリックすると、index.blade.phpのページを表示する処理。
web.phpのURL設定
//トップページを表示
Route::get('/', function () {
return view('welcome');
});
//nameメソッドを追記
Route::get('/test/', 'ArticleController@index')->name('testpage');
welcome.blade.phpに下記リンクを追加
<a href="{{ route('testpage') }}">testpage</a>
-コントローラーとビューに追記
-【Controller】
class ArticleController extends Controller
{
public function index(){
$id = 123;
return view('index', ['abc' => $id]);
}
}
-【View】
<body>
<p>テストページ</p>
{{ $abc }}
</body>
-上記画像のトップデージwelcome.blade.php
のtestpage
のリンクをクリックしたら、http://localhost:8009/test
のurlにアクセスできることを確認