ルールオブジェクトの作成
artisanコマンドを用いてルールオブジェクトを作成します。
$ php artisan make:rule name_kana
appディレクトリ下にRulesディレクトリが作られその中にnama_kana.phpが作られているはずです。name_kana.php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class name_kana implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
//
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The validation error message.';
}
}
ルール、メッセージを定義
passesメソッドにはルールを定義、messageメソッドにはエラーメッセージを定義します。name_kana.php
public function passes($attribute, $value)
{
if(!preg_match('/[^ァ-ヴー]/u',$value))
{
return true;
}
return false;
}
正規表現を使い、カタカナ、「ー」(全角伸ばし棒)以外の文字列が含まれるときはfalseを返し、それ以外はtrueを返すようにします。
引数の$attribute
にはキー、$value
には値が入ります。
preg_match()で第一引数の正規表現に、第二引数の値がマッチしたらtrue、マッチしなければfalseとなりますが、
!で否定していることによりマッチしたらfalse、しなければtrueになります。
つまりでカタカナと「ー」以外(/[^ァ-ヴー ]/u)が$value
に含まれていなければtrueを返すということです。name_kana.php
public function message()
{
return 'カタカナを入力してください';
}
使い方
‘email’ => new EmailRule(),