0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

laravel カスタムバリデーター チェックされる以外のPostされた値を使う方法

Last updated at Posted at 2021-12-07

目的

  • カスタムバリデーターのルール定義部分にてそのルールを用いてチェックされる値以外を呼び出して使用する方法をまとめる

環境

  • ハードウェア環境
項目 情報
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をインストールする

ご注意

  • 本知見は同じプロジェクトに携わっているエンジニアの方に教えていただいた内容です。
  • 筆者の知見ではありません。
  • 忘れたくなかったため記事にしました!(ご本人にも快く承諾いだけました!本当にありがとうございます!)

概要

方法

  1. 下記のように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>
    
  2. 下記のように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));
        }
    }
    
  3. ローカルサーバーを起動し/contents/createにアクセス、任意の文字列を入力して「投稿」をクリックする。

    新規投稿_と_「laravel_カスタムバリデーターで当該のname以外のnameに紐づくPostされた値を取得する方法」を編集_-_Qiita.png

  4. dd()メソッドが実行され、CustomValidator.phpにて「otherStr」に 紐づく値が取得する事ができた。

    127_0_0_1_8000_contents_save.png

簡単な説明

  • 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;
    
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?