INSIGHT

情報・インサイト

【Laravel】Requestクラスに手動でパラメータを追加・上書きする

2021.12.28

フォームの内容などをリクエストパラメータとして受け取る際に使用するLaravelのRequestクラスがありますよね。

そのとき、フロント側(HTML、Javascript)でフォームとして追加するのではなく、サーバ側(php、ここではコントローラーやリクエストクラス)でパラメータを追加するにはどうすればいいのでしょうか。

HTMLのinput type=”hidden” では値を検証ツールで変えられるおそれがあるため使いたくありません。。。

そこで、Requestクラスのmergeメソッドを以下のように使用します。

$request->merge([‘name’ => ‘whizz’]);

これで新たにパラメータの追加ができます。

もともと’name’というリクエストパラメータが存在する場合は、更新となります。

 

パラメータを追加する前(元々画面から’testParam’というパラメータを渡しています)

public function index(TestRequest $request)
{
    $param = $request->all();

    dd($param);
    ....

ControllerでRequestクラスに追加する場合(’mergeParam’というパラメータを追加)

public function index(TestRequest $request)
{
    $request->merge(['mergeParam' => 'test']);

    $param = $request->all();

    $dd($param);
    ....

RequestクラスでRequestクラスに追加する場合(’mergeRequestClass’というパラメータを追加)

public function fules() {
    // リクエストクラスでマージする場合は必ず通るrulesメソッドに記載しています         
    // rulesメソッドでなくても処理が通る場所ならどこでも大丈夫です    
    $this->merge(['mergeRequestClass' => 'whizz']);

    return [

    ];
}

注意

やりがちなミスとして、

$request->nameや$request->input(‘name’) でパラメータが取得できるため、

$request->name = ‘whizz’;

$request->input(‘name’) = ‘whizz’;

としてしまいがちですが、追加や上書きはできません。

 

お役に立てれば幸いです。

ウィズテクノロジーで一緒に働きませんか?
分野を限定せず幅広い事業を展開。新しい技術の導入にも積極的に取り組んでおり、チャレンジや成長する機会が沢山。
あなたの経験・知識を活かしながら一緒にIT業界を盛り上げて行きましょう!
採用情報詳細はコチラ

WORKS

導入事例

ウィズテクノロジーは大阪を拠点に、システム開発の分野で20年の実績を持つパートナー企業です。
業務効率化やDX支援など、さまざまな課題にワンストップで対応。
経験豊富なエンジニアが、企業の成長を技術面からしっかりサポートします。

導入事例一覧を見る
導入事例一覧を見る

RECRUIT

採用情報

未来に、価値ある選択を。

All WhizzTechnologyは、期待を超える価値をともにつくり、より良い未来へ導く仲間を募集しています。