Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel自定义验证消息_Laravel - Fatal编程技术网

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

我正在尝试使用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]?[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",
    ),