Laravelでのルーティング入門【PHP Larevel】

LaravelはPHPで最も人気のあるフレームワークの一つで、その強力なルーティングシステムは開発者がアプリケーションのURL構造を簡単に管理できるように設計されています。この記事では、Laravelでコントローラを作成し、基本的なルーティングを設定するプロセスを初心者向けに解説します。

コントローラの作成

Laravelプロジェクトでコントローラを作成する最初のステップは、artisanコマンドラインツールを使用することです。コントローラはMVCアーキテクチャの「C」、つまりModel-View-Controllerの一部を担います。ここで、HelloControllerという名前のコントローラを作成します。ターミナルまたはコマンドプロンプトを開き、Laravelプロジェクトのルートディレクトリに移動して、以下のコマンドを実行します。

php artisan make:controller HelloController

このコマンドはapp/Http/Controllersディレクトリ内にHelloController.phpファイルを作成します。次に、このコントローラにアクション(メソッド)を追加します。ここでは、indexotherという2つのメソッドを例として挙げます。

ルーティングの設定

ルーティングは、ユーザーのリクエスト(URL)をアプリケーションのコントローラやクロージャにマッピングするプロセスです。Laravelでは、このルーティングの定義は主にroutes/web.phpファイルで行われます。

web.phpに以下のコードを追加して、2つのルートを定義します。

use App\Http\Controllers\HelloController;

// 特定のアクション(otherメソッド)に対するルート
Route::get('hello/other', [HelloController::class, 'other']);

// より一般的なアクション(indexメソッド)に対するルート
Route::get('hello/{id?}/{pass?}', [HelloController::class, 'index']);

このコードでは、/hello/otherへのGETリクエストがHelloControllerotherメソッドに、/hello/{id?}/{pass?}の形式のリクエストがindexメソッドにそれぞれマッピングされます。{id?}{pass?}はオプショナルパラメータで、これらはリクエストに含まれない場合にデフォルト値を使用します。

コントローラ内でのHTMLの生成

コントローラのメソッドでは、HTMLコンテンツを直接生成してレスポンスとして返すことができます。HelloController内で、indexotherメソッドを以下のように定義します。

namespace App\Http\Controllers;

use Illuminate\Http\Request;

// HTMLテンプレートのためのグローバル変数
global $head, $style, $body, $end;
$head = '<html><head>';
$style = /* スタイル情報 */;
$body = '</head><body>';
$end = '</body></html>';

// タグを生成するためのヘルパ関数
function tag($tag, $txt) {
   return "<{$tag}>" . $txt . "</{$tag}>";
}

class HelloController extends Controller
{
    public function index($id='noname', $pass='unknown') {
        global $head, $style, $body, $end;
      
        $html = $head . tag('title', 'Hello/Index') . $style . $body
        . tag('h1', 'Index') . tag('p', 'this is Index page')
        .'<ul>'
        . tag('li', $id)
        . tag('li', $pass)
        .'</ul>'
        . '<a href="' . url('/hello/other') . '">go to Other page</a>'
        . $end;

        return $html;
    }

    public function other() {
        global $head, $style, $body, $end;
      
        $html = $head . tag('title','Hello/Other') . $style . $body
            . tag('h1','Other') . tag('p','this is Other page')
            . $end;
        return $html;
    }
}

このコントローラでは、HTMLの基本構造をグローバル変数で定義し、tag関数を使用してHTMLタグを簡単に生成しています。そして、indexメソッドとotherメソッドで異なるHTMLコンテンツを組み立て、リクエストに応じたページを表示しています。

まとめ

Laravelでのルーティングとコントローラの使用は、アプリケーションの基本的な構成要素です。この記事では、コントローラの作成、ルーティングの設定、そしてHTMLコンテンツの生成という基本的なプロセスを紹介しました。Laravelの強力な機能を活用することで、開発者は柔軟かつ効率的にWebアプリケーションを構築できます。

この記事が気に入ったらサポートをしてみませんか?