laravel5.2 バリデーションのrequired、全角スペースは許容する

掲題の通り。 なんか設定があるのかは不明。

そもそもrequiredって

  • 値がnull
  • 値が空文字
  • 値がからの配列か、空のCountableオブジェクト
  • 値がパスのないアップロード済みファイル

のチェックをする。

値が空文字なのに全角スペースは通る件

通っちゃうんですよねぇ。 なのでカスタムバリデーションで対応。

<?php
namespace App\Validator;

/**
 * カスタムバリデータークラス
 *
 * @package App\Validator
 */
class CustomValidation extends \Illuminate\Validation\Validator<?php

    /**
     * 全角空白チェック
     *
     * @param $attribute
     * @param $value
     * @param $parameters
     * @return bool
     */
    public function validateDoubleSpace($attribute, $value, $parameters)
    {
        $strip = trim(mb_convert_kana($value, "s", 'UTF-8'));

        if (empty($strip)) {
            return false;
        }
        return true;
    }
}
<?php

namespace App\Http\Requests;

use App\Http\Requests\Request;

class CustomRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name' => 'required|doubleSpace|max:15',
        ];
    }
}

的な。

カスタムバリデートについては

laravel5.2 バリデーションを自作 (カスタムバリデーション) - web開発メモ

なんか自作バリデーションやってくれないんだけど…

たとえば、文字列の中に'test'が入ってるかチェックしたい!みたいな処理を作るとします。これ、どうやらそもそもそのINPUTに値が入ってないと実行してくれないみたい。requiredで引っかかるようなフィールドは実行しないんですね。