以下の内容はhttps://hhelibex.hatenablog.jp/entry/2025/10/20/181827より取得しました。


Zend FrameworkからLaravelに移行する話(10)

はじめに

お仕事で、Zend Frameworkのバージョンアップをしなければならなくなった・・と思ったら、Zend Frameworkはもうなくて、Laminas Projectに移って新たなフレームワークとして公開されている。 しかし、Laminas MVCでは必要な要件を満たさないことが分かってとん挫していた。

そこで、次の候補としてLaravelを挙げて、必要な要件を満たせるかどうかを一歩ずつ調査していく。

要件(10)

10個目の要件は、「__callメソッドを使ったアクションのまとめ上げができること」。

一部のコントローラで__callメソッドを使っているので、念のため、フレームワーク側で変なことをしていないかを確認する。

結論から言うと、__callメソッドにはRequestオブジェクトを渡せないので、別のアプローチになる。

導入

こちらでセットアップした環境を(コピーして)使っていく。

hhelibex.hatenablog.jp

私は以下のようにコピーを作成。

cp -pr laravel-setup-9-request-parameters laravel-setup-10-call-method
cd laravel-setup-10-call-method

設定・実装

まず、例示のためのコントローラーを作っていく。

php artisan make:controller '\App\Http\Controllers\CallController'

このapp/Http/Controllers/CallController.phpを以下のように編集する。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class CallController extends Controller
{
    public function login(Request $request, $tenantAlias = null)
    {
        return view('call.login', ['action_name' => $tenantAlias]);
    }
}

次に、ビューテンプレートresources/views/call/login.tplを作成する。

Action Name:{$action_name|escape:"html"}

最後に、routes/web.phpに以下の内容を追記する。

Route::get('/call/{tenant_alias}', [\App\Http\Controllers\CallController::class, 'login'])->where('tenant_alias', '[a-zA-Z0-9-]*');

最後の正規表現の部分は、許容するURLの文字列パターンなのでご自由に。

動作確認

以下のURLにアクセスする。

http://<your-ip-address>/laravel-setup-10-call-method/public/call/test-hoge

routes/web.phpの設定にある{tenant_alias}の部分がtest-hogeとマッチするので、期待通りにアクションが呼び出されているため、以下のような画面が表示される。

Action Name:test-hoge 

まとめ

  • 結果的に、__callメソッドは使えなかったが、もっと分かりやすくすっきりした形で書ける



以上の内容はhttps://hhelibex.hatenablog.jp/entry/2025/10/20/181827より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14