【问题标题】:Laravel5 - Request validation always passesLaravel5 - 请求验证总是通过
【发布时间】:2016-06-24 06:48:04
【问题描述】:

我正在学习/使用 Laravel5 并使用请求生成器工具来制作自定义请求验证处理程序;

php artisan make:request <nameOfRequestFile>

我发现我的验证总是通过,但我不知道为什么。

在我看来,我对错误做了一个 vardump;

{{ var_dump($errors) }}

当我提交一个空表单时,它总是会插入一条新记录,但它应该会失败。

var 转储报告;

object(Illuminate\Support\ViewErrorBag)#135 (1) { ["bags":protected]=> array(0) { } }

这似乎表明错误包总是空的。

我的请求文件很简单

namespace App\Http\Requests;
use App\Http\Requests\Request;

class PublishDriverRequest extends Request
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
          'name.required|min:3' => 'Please provide a name.',
          'companyName.required|min:3' => 'Please provide a company name.'
        ];
    }
}

我检查了我的输入表单,名字是一样的;

<input type="text" name="name" id="name" class="form-control">
<input type="text" name="companyName" id="companyName" class="form-control">

我检查了我的数据库,名字也一样。

我的控制器在存储数据时同样直截了当;

  public function store(PublishDriverRequest $request) {
        Driver::create($request->all());
        return redirect('/');
    }

所以我不确定为什么验证总是通过;如果我提交一个空表单,它应该会失败,因为规则指示最小长度和要求。

我做错了什么?

【问题讨论】:

    标签: php validation laravel


    【解决方案1】:

    将验证规则更改为:

    public function rules()
    {
        return [
          'name' => 'required|min:3',
          'companyName' => 'required|min:3',
        ];
    }
    

    显示自定义验证错误:

    public function messages()
    {
        return [
            'name.required' => 'Please provide a name.',
            'companyName.required' => 'Please provide a company name.',
        ];
    }
    

    注意:在rules()之前使用message()方法

    【讨论】:

    • 是的,我弄错了规则方法。我将其更改为:$rules = ['name' =&gt; 'required', 'companyName' =&gt; 'required']; 并且有效
    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 2014-09-27
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    相关资源
    最近更新 更多