请求验证在Laravel 5.4中不起作用

时间:2018-01-13 17:26:05

标签: php validation laravel-5

在MyRequest中:

public function authorize()
{
    return true;
}
public function rules()
{
    switch($this->method())
    {
        case 'GET':
        case 'DELETE':
        {
            return [];
        }
        case 'POST':
        {
            dd('here working'); // if remove this line, it does not working, page just like refesh
            return [
                'name' => 'required',
                'price' => 'required',
            ];
        }
        case 'PUT':
        case 'PATCH':
        {
            return [
                'name'      => 'required',
                'price'     => 'required',
            ];
        }
        default:break;
    }
}

在我的控制器中:

public function store(MyRequest $request)
{
}

我确定应用程序运行到dd()函数以防#34; POST"。但是,如果我删除此行(dd()函数),页面像刷新,它不验证数据。

1 个答案:

答案 0 :(得分:1)

实际上我认为它确实验证了您的数据。表单提交后,检查浏览器devtools中的响应代码。如果状态代码为 302 ,则可能是模板中有响应附带的变量Illuminate\Support\MessageBag $errorsHow to use $errors is explained here.

如果验证失败,Laravel通常会将您重定向回上一页(本例中为表单页面),状态代码为 302 ,并另外将变量$errors注入用于向用户显示消息的模板。将以下内容粘贴到您正在处理的表单旁边的刀片式模板中,您可能会发现不完全页面刷新:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif