下記記事はLarave4ですがLaravel5でも表題の事象が発生します。
追記(正規表現を使おう)
regexを使って正規表現を利用する
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'identifier' => 'required|regex:regex:/^[a-zA-Z0-9-]+$/|max:255',
];
}
alphaバリデーションについて
- 半角英数字の入力を制限するフィールドで日本語の入力が通ってしまう悲しい
下記で対応(但し次はAttributes()が動かなくなります・・・)
App\Services\CustomValidator.phpファイルを作成
<?php
namespace App\Services;
class CustomValidator extends \Illuminate\Validation\Validator
{
/**
* alpah
*
* @param string $attribute
* @param string $value
* @return true
*/
protected function validateAlpha($attribute, $value)
{
return (preg_match("/^[a-z]+$/i", $value));
}
/**
* alpah_dash
*
* @param string $attribute
* @param string $value
* @return true
*/
protected function validateAlphaDash($attribute, $value)
{
return (preg_match("/^[a-z0-9_-]+$/i", $value));
}
/**
* alpah_num
*
* @param string $attribute
* @param string $value
* @return true
*/
protected function validateAlphaNum($attribute, $value)
{
return (preg_match("/^[a-z0-9]+$/i", $value));
}
}
- バリデーション処理を変更したい処理を記述する
App\Providers\AppServiceProvider.phpファイルでカスタムバリデーションを適用する
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Validator::resolver(function($translator, $data, $rules, $messages)
{
return new CustomValidator($translator, $data, $rules, $messages);
});
}