Laravel自定义验证消息
我正在尝试使用Laravel验证英国邮政编码。以下是我得到的:Laravel自定义验证消息,laravel,Laravel,我正在尝试使用Laravel验证英国邮政编码。以下是我得到的: //routes.php $rules = array( 'pcode' => array('required:|Regex:/^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9
//routes.php
$rules = array(
'pcode' => array('required:|Regex:/^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})$/')
);
$messages = array(
'required' => 'The :attribute field is required.',
'pcode' => array('regex', 'Poscode should be a valid UK based entry'),
);
$validator = Validator::make(Input::all(), $rules, $messages);
在我的刀刃上:
如果我提交的表单中有一个空的pcode字段,它会警告我需要一个必填字段。如果我输入的邮政编码“74rht”无效,那么我的验证器将不执行任何操作或无法显示上述自定义消息?Laravel声明:
注意:使用正则表达式模式时,可能需要在数组中指定规则,而不是使用管道分隔符,特别是当正则表达式包含管道字符时
将$规则更改为此结构:
$rules = array(
'pcode' => array(
'required',
'Regex:/^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})$/'
)
);
如果这不起作用,那么您的正则表达式可能无效,请尝试使用更简单的正则表达式检查验证器是否工作。Laravel声明:
注意:使用正则表达式模式时,可能需要在数组中指定规则,而不是使用管道分隔符,特别是当正则表达式包含管道字符时
将$规则更改为此结构:
$rules = array(
'pcode' => array(
'required',
'Regex:/^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})$/'
)
);
如果这不起作用,那么您的正则表达式可能无效,请尝试使用更简单的正则表达式检查验证器是否工作。首先,您需要向验证器注册自定义验证规则
Validator::extend('pcode_rule_name', function($attribute, $value)
{
return preg_match('/^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})$/', $value);
});
src:
然后,您需要在app/lang/en/validation.php中指定自定义消息
您将找到一个地方为您的规则添加自定义消息
'custom' => array(
'attribute-name' => array(
'rule-name' => 'custom-message',
),
),
您可以添加如下规则:
'custom' => array(
'pcode' => array(
'pcode_rule_name' => 'Post Code should be a valid UK based entry',
),
),
还将有一个数组来命名您的pcode字段,因此它将更能以规则命名,如required
'attributes' => array(),
这样加上名字就行了
'attributes' => array(
'pcode' => 'Postal Code",
),
首先,您需要向验证器注册自定义验证规则
Validator::extend('pcode_rule_name', function($attribute, $value)
{
return preg_match('/^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))) [0-9][A-Za-z]{2})$/', $value);
});
src:
然后,您需要在app/lang/en/validation.php中指定自定义消息
您将找到一个地方为您的规则添加自定义消息
'custom' => array(
'attribute-name' => array(
'rule-name' => 'custom-message',
),
),
您可以添加如下规则:
'custom' => array(
'pcode' => array(
'pcode_rule_name' => 'Post Code should be a valid UK based entry',
),
),
还将有一个数组来命名您的pcode字段,因此它将更能以规则命名,如required
'attributes' => array(),
这样加上名字就行了
'attributes' => array(
'pcode' => 'Postal Code",
),