douou1891
2015-12-01 06:35
浏览 99
已采纳

Laravel验证之间不将逗号分隔的字符串转换为数组?

Just trying to do some tags validation. First checking for number of tags (as comma separated list of id's).

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;
    }

}

It keeps spititing out the message as

The tags must be between 2 and 5 characters.

Instead of the proper array message:

The :attribute must have between :min and :max items.
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dougong8012 2015-12-01 07:05
    已采纳

    Try to use custom validation rule for you requirement:

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

    and then rules would be

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

    and message can update by

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

    I hope, you get basic idea to achieve this requirement, let me know if its helps.

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题