【问题标题】:Laravel Validation between not converting comma separated string to array?不将逗号分隔的字符串转换为数组之间的Laravel验证?
【发布时间】:2016-03-05 00:02:30
【问题描述】:

只是尝试做一些标签验证。首先检查标签的数量(以逗号分隔的 id 列表)。

class SomePostRequest extends Request
{
    public function rules()
    {
        return [
            'tags' => 'between:2,5'
        ];
    }


    public function all()
    {
        $input = parent::all();

        $input['tags'] = explode(',', @$input['tags']);

        return $input;
    }

}

它不断吐出消息为

The tags must be between 2 and 5 characters.

而不是正确的数组消息:

The :attribute must have between :min and :max items.

【问题讨论】:

    标签: php validation laravel laravel-5


    【解决方案1】:

    尝试根据您的要求使用自定义验证规则:

    $this->app['validator']->extend('tag', function ($attribute, $value, $parameters)
    {
        $tags = explode(',', $value);
        if(count($tags) >= 2 || count($tags) <= 5)){
            return false;
        }
    });
    

    然后规则就是

    public function rules(){
        return [
            'tags' => ['tag']
        ];
    }
    

    消息可以更新

    public function messages() {
            return [
                'tags.tag' => 'The :attribute must have between :min and :max items.'];
    
    }
    

    我希望,您对实现此要求有基本的了解,如果有帮助,请告诉我。

    【讨论】:

    • 是的,这一切都很好,基本上我已经有了它作为一种解决方法。但我特别关注我的示例代码中的情况。例如,如果您要使用自定义验证器并且只是 print_r($value),那么它已经从 all 方法中分解了。所以重点是为什么between 没有正确地将其解析为array。我只是不确定我做错了什么还是验证器中的错误。
    • 基本上,在与数组不兼容之间,那是实现另一种方法的原因。
    猜你喜欢
    • 2018-03-18
    • 2021-12-18
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多