Laravelのバリデーションでalpha,alpha_num,alpha_dashを日本語に対応する

Laravelでalpha,alpha_num,alpha_dashのバリデーションを使っても日本語入力ができてしまうので、カスタムバリデーションを作成して対応してみます。

サンプルコード

カスタムバリデーションについては以前に記事を投稿していますので、そちらをご確認ください。
Laravelでカスタムバリデーションを作成する | cly7796.net

今回は上記で行った設定に、alpha,alpha_num,alpha_dashの代わりになるバリデーションを追加してみます。

app\Validator\CustomValidator.php

<?php
namespace App\Validator;

class CustomValidator extends \Illuminate\Validation\Validator
{
     
    public function validateAlphaCheck($attribute, $value, $parameters)
    {
        return preg_match('/^[A-Za-z]+$/', $value);
    }
     
    public function validateAlphaNumCheck($attribute, $value, $parameters)
    {
        return preg_match('/^[A-Za-z\d]+$/', $value);
    }
     
    public function validateAlphaDashCheck($attribute, $value, $parameters)
    {
        return preg_match('/^[A-Za-z\d_-]+$/', $value);
    }
}

PostController.php

<?php

namespace App\Http\Controllers;

use Request;
use Redirect;
use Validator;

class PostController extends Controller
{
    public function getIndex()
    {
        return view('post.index');
    }

    // バリデーションのルール
    public $validateRules = [
        'alpha'=>'alpha_check',
        'alpha_num'=>'alpha_num_check',
        'alpha_dash'=>'alpha_dash_check'
    ];

    public $validateMessages = [
		'alpha_check'=>'半角英字で入力してください。',
		'alpha_num_check'=>'半角英数字で入力してください。',
		'alpha_dash_check'=>'半角英数字と-_で入力してください。'
	];

    public function postIndex()
    {
		// postしたデータをすべて取得
		$data = Request::all();

        //バリデーションをインスタンス化
        $val = Validator::make(
			$data,
			$this->validateRules,
			$this->validateMessages
		);

        //バリデーションNGの場合
        if($val->fails()){
            return redirect('/post/')->withErrors($val)->withInput();
        }

		return 'OK!';
    }
}

resources\views\post\index.blade.php

{!! Form::open() !!}
	<dl>
		<dt>{!! Form::label('alpha', '英字:') !!}</dt>
		<dd>
			{!! Form::text('alpha', null) !!}
			@if($errors->has('alpha'))<p class="error">{{ $errors->first('alpha') }}</p> @endif
		</dd>
	</dl>
	<dl>
		<dt>{!! Form::label('alpha_num', '英数字:') !!}</dt>
		<dd>
			{!! Form::text('alpha_num', null) !!}
			@if($errors->has('alpha_num'))<p class="error">{{ $errors->first('alpha_num') }}</p> @endif
		</dd>
	</dl>
	<dl>
		<dt>{!! Form::label('alpha_dash', '英数字とハイフン・アンダーバー:') !!}</dt>
		<dd>
			{!! Form::text('alpha_dash', null) !!}
			@if($errors->has('alpha_dash'))<p class="error">{{ $errors->first('alpha_dash') }}</p> @endif
		</dd>
	</dl>
	<div>
		{!! Form::submit('送信') !!}
	</div>
{!! Form::close() !!}

日本語入力でエラーが出ることが確認できました。

corresponding-to-the-japanese-in-the-validation-of-laravel01

 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年5月
 1234
567891011
12131415161718
19202122232425
262728293031