Laravel 5.8自定义表单请求未按预期工作?

5

我创建了一个名为ClientStoreRequest的自定义表单请求,代码如下:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ClientStoreRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
        // return  $this->user()->can('add-clients');
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name' => 'required|unique:clients|max:255',
            'website' => 'required|url',
            'street' => 'required',
            'town' => 'required',
            'postcode' => 'required|max:8',
            'county' => 'required',
            'country' => 'required'
        ];
    }
}

我随后修改了ClientControllerstore方法,使其变成这样:

    /**
     * Store a newly created resource in storage.
     *
     * @param  ClientStoreRequest  $request
     * @return \Illuminate\Http\Response
     */
    public function store(ClientStoreRequest $request)
    {
        dd(1);
    }

当表单提交时,应该终止页面并打印1到屏幕。当我使用ClientStoreRequest $request时,它只是将我发送回提交表单的页面,没有错误,也没有dd(1)结果,但是当我使用Request $request时,它会将1打印到屏幕上。
我是否漏掉了什么非常明显的东西?我已经按照文档创建了表单请求
编辑:我正在使用资源控制器,所以路由是Route :: resource('clients','ClientController');

你的路由设置如何? - Techno
https://laravel.com/docs/5.8/validation#form-request-validation >> 当您为请求定义规则时,由于规则的限制,控制器函数将不会被触发。您是否已经发送了所有必需的参数? - Techno
@RobBiermann 我不确定你的意思,我现在会发布路线。 - Andy Holmes
1个回答

3

有点尴尬,但这个问题纯粹是由于开发人员的错误导致的。自定义表单请求实际上是正常工作的...只是我的规则引用了一个我忘记放入表单的字段,因此没有将错误显示到屏幕上!一旦我输出了通常的$errors数组,我就可以看到我的错误-我会把它归咎于深夜编码!


<input type="text" class="form-control" id="name"..... 我忘记加上 name="" 属性,导致规则无法生效。 - Nurkartiko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接