【问题标题】:Errors aren't showing when validation failed验证失败时不显示错误
【发布时间】:2017-10-01 19:19:20
【问题描述】:

dump($request->all()); 函数不执行如果验证失败。相反,我已经重定向到上一页。没关系。但是...没有出现错误列表,并且 html 代码中缺少 <div class="alert alert-danger"> 行。会话开始,我在 cookie 中看到 laravel_session。为什么条件@if (count($errors)>0) 不执行?

GuestController.php

class GuestController extends Controller
{

// Add comments
public function store(Request $request){

    $rules = [
        'name' => 'required',
        'email' => 'required',
        'message' => 'required'
    ];

    $this->validate($request, $rules);

    dump($request->all());

内核.php

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    ];

布局中的片段

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

【问题讨论】:

  • 你用的是哪个 Laravel 版本
  • @lewis4u,我用的是5.5.3版本
  • 请正确格式化您的问题
  • 向我们展示您重定向回来的代码。你可能错过了-&gt;withErrors($validator-&gt;errors())
  • 这不是 Laravel 5.5.3 版... 默认情况下,您的中间件数组应如下所示: protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate \Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \App\Http\Middleware\TrustProxies::class, ];

标签: php laravel validation


【解决方案1】:

我认为你在 Controller 中做错了

public function store(Request $request)
    {
        // dd($request);
        $this->validate($request,[
          'name' => 'required',
          'email' => 'required',
          'message' => 'required'
        ]);
        Session::flash('success','Successfully saved');
    }

在您的视图中 create.blade.php 文件

@if(Session::has('success'))

    <div class="alert alert-success" role="alert">
        <strong>Success::</strong> {{ Session::get('success') }}
    </div>

@endif

@if(count($errors) > 0)

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

@endif

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多