目的
- カスタムバリデーターのルール定義部分にてそのルールを用いてチェックされる値以外を呼び出して使用する方法をまとめる
環境
- ハードウェア環境
項目 | 情報 |
---|---|
OS | macOS Big Sur(11.6) |
ハードウェア | MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) |
プロセッサ | 2 GHz クアッドコアIntel Core i5 |
メモリ | 32 GB 3733 MHz LPDDR4 |
グラフィックス | Intel Iris Plus Graphics 1536 MB |
- ソフトウェア環境
項目 | 情報 | 備考 |
---|---|---|
PHP バージョン | 7.4.11 | Homebrewを用いてこちらの方法で導入→Mac HomebrewでPHPをインストールする |
Laravel バージョン | 8.X | commposerを用いてこちらの方法で導入→Mac Laravelの環境構築を行う |
MySQLバージョン | 8.0.21 for osx10.13 on x86_64 | Homwbrewを用いてこちらの方法で導入→Mac HomebrewでMySQLをインストールする |
ご注意
- 本知見は同じプロジェクトに携わっているエンジニアの方に教えていただいた内容です。
- 筆者の知見ではありません。
- 忘れたくなかったため記事にしました!(ご本人にも快く承諾いだけました!本当にありがとうございます!)
概要
- 下記の記事の作業が完了しているものとして本記事の説明を行う。
-
laravel8_easy_crud/app/Validator/CustomValidator.php
のvalidateNumOnly()
でcontent以外のPostを受け取って都度ルールを変更する方法をまとめる。 - データPost時に「content」と「otherStr」を一緒にPostするようにし、
dd()
メソッドで「otherStg」が実際にvalidateNumOnly()
で取得できるか確認する。 - 今回の作業完了後のコードは下記にアップしてある。
方法
-
下記のように
create.blade.php
を修正する。(<input type="hidden" value="これはotherStrです" name="otherStr">
を追記)laravel8_easy_crud/resources/views/contents/create.blade.php<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>新規投稿</title> </head> <body> <header></header> <main> <h1>新規投稿</h1> <form action="{{ route('contents.save') }}" method="post"> @csrf @error('content') {{ $message }} <br> @enderror <textarea name="content" cols="30" rows="10"></textarea> <input type="hidden" value="これはotherStrです" name="otherStr"> <input type="submit" value="投稿"> </form> </main> <footer></footer> </body> </html>
-
下記のように
CustomValidator.php
を修正する。(dd($this->data['otherStr']);
を追記)laravel8_easy_crud/app/Validator/CustomValidator.php<?php namespace App\Validator; use Illuminate\Validation\Validator; class CustomValidator extends Validator { public function validateNumOnly($attribute, $value) { dd($this->data['otherStr']); return (preg_match("/^[0-9 ]+$/i", $value)); } }
-
ローカルサーバーを起動し/contents/createにアクセス、任意の文字列を入力して「投稿」をクリックする。
-
dd()
メソッドが実行され、CustomValidator.phpにて「otherStr」に 紐づく値が取得する事ができた。
簡単な説明
-
laravel8_easy_crud/vendor/laravel/framework/src/Illuminate/Validation/Validator.php
に記載されている下記の部分で今回呼び出した変数data
が定義されているっぽいlaravel8_easy_crud/vendor/laravel/framework/src/Illuminate/Validation/Validator.php/** * The data under validation. * * @var array */ protected $data;