【Laravel】Routingの実装方法まとめ!web.phpの使い方

【Laravel】Routingの実装方法まとめ!web.phpの使い方

この記事からわかること

  • LaravelRoutingとは?
  • WebページアクセスするURL設定する方法
  • web.php使い方
  • パラメータ受け取る方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

LaravelのRouting(ルーティング)とは?

Laravelを使用してWebサイトを作成する時にはRouting(ルーティング)をしないと正しくページが表示されません。Routing(ルーティング)とはリクエストされているURLに対して指定したコンテンツ(アクション)を正しく返すように処理する機能のことです。

Routing機能を使うことでトップページ以下のページの割り振りや許容するHTTPメソッドの種類、クエリパラメータの処理などリクエストの種類に応じたさまざまな適切な処理を定義することが可能になっています。

Routingを行うためのファイルはLaravelプロジェクト内のroutesディレクトリの中に格納されています。

Laravelプロジェクト
  ├── app/
  ├── bootstrap/
  ├── config/
  ├── database/
  ├── public/
  ├── resources/
  │        ├── lang/
  │        ├── views/
  │               └── welcome.blade.php  ⇦ブレードテンプレート
  ├── routes/     ⇦ルーティング設定ファイル
  │        ├── web.php
  │        ├── api.php
  │        ├── console.php
  │        └── channels.php
  ├── storage/
  ├── tests/
  ├── vendor/
  ├── .env
  ├── artisan
  ├── composer.json
  ├── package.json
  ├── ...

web.php

その中の「web.php」がWebページにアクセスするための基本的なルーティング設定を記述していくファイルになります。プロジェクト作成時にデフォルトで記述されているルーティングを見てみます。


<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return view('welcome');
});

5行目でRouteクラスの静的メソッド::getを呼び出しています。1つ目の引数にはトップページ以降のパス(URL)を渡します。以下の場合は/のみなのでトップページにアクセスされた時のルーティングが実装されています。

Route::get(パス, 関数やコントローラーアクション);

2つ目の引数には関数またはコントローラーアクションを渡します。上記の場合は無名関数の中でview('welcome')を返しています。例えばこのような感じです。

Route::get('/item', function () {
    return view('item');
});

他のファイルの役割

view関数

view関数は名前の通りにViewを生成するためのメソッドです。引数にはブレードテンプレートファイル(XXXX.blade.php)の名称を指定します。

view('テンプレート名')

プロジェクト生成時にはresources/views/welcome.blade.phpが用意されているのでトップページにアクセスすることでLaraveのページが開くようになっています。

ルートパラメータを受け取る

ルーティングではURLからパラメータを受け取りViewに反映させることが可能になっています。まずは新しいルーティングを追加します。/user/{id}/{name?}がアクセスされるパス部分であり、{id}とすることでその部分を関数またはテンプレート側から取り出せるようになります。


Route::get('/user/{id}/{name?}', 'App\Http\Controllers\Controller@user');

また{name?}となっているのは任意パラメータです。ここに値があれば受け取れるしなければ格納されません。これをController側で受ける際は以下のようになります。任意パラメータの箇所は初期値を格納しておきます。


public function user($id,$name = 'unknown')
{
    echo "idは{$id}で、名前は{$name}です。";
}

ブレードテンプレートから受け取る

先ほどはそのまま関数に渡して表示させていましたが実際にはブレードテンプレートに渡すことが多いかと思います。ブレードテンプレートに渡すにはまずコントローラー側を以下のように変更します。


public function user($id,$name= 'unknown')
{
    $data = [
        'id' => $id,
        'name' => $name
    ];
    return view('index',$data);
}

メソッドの中には$data変数を定義中に辞書形式でデータを格納しています。それをviewメソッドの第2引数に渡すことでテンプレート側に渡すことができます。テンプレート側では辞書のキー値名の変数から対象の値にアクセスできます。


<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <p>idは{{$id}}名前は{{$name}}</p>
</body>

</html>

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index