Laravel的验证不会向我显示视图中的错误

时间:2019-03-05 18:39:06

标签: laravel validation

我在控制器中有这个...

public function store(Request $request)
{
    $this->validate($request, [
        'name' => 'required',
        'category_id' => 'required',
        'description' => 'required',
        'price' => 'required',
        'long_description' => 'required'
    ]);

    $product = new Product();
    foreach ($request->all() as $key => $value) {
        if ($key !== '_token') $product->$key = $value;
    }
    $product->save();

    return redirect('/admin/products');
}

这在视图中...

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

未经验证的表单很完美。但是我不明白为什么他在重定向时不向我显示视图中的错误。

2 个答案:

答案 0 :(得分:0)

您需要执行以下操作-

public function store(Request $request)
{
    $request->validate($request, [
        'name' => 'required',
        'category_id' => 'required',
        'description' => 'required',
        'price' => 'required',
        'long_description' => 'required'
    ]);

    if (!$validator->fails()) {
        $product = new Product();
        foreach ($request->all() as $key => $value) {
            if ($key !== '_token') $product->$key = $value;
        }
        $product->save();

        return redirect('/admin/products');
    } else {
        \Session::flash('errors', $validator->messages());

        return redirect()->back()->withInput();
    }
}

我对您的代码进行了两项更改-

  1. 在$ request而不是$ this上添加了validate方法。
  2. 添加了验证失败的检查,并通过会话发送了这些错误。

答案 1 :(得分:0)

我已经解决了。问题是我在api.php中有发布路由。通过将其移动到web.php即可。