【问题标题】:Laravel 8.12 does not show error messagesLaravel 8.12 不显示错误信息
【发布时间】:2021-02-26 10:35:50
【问题描述】:

我不明白为什么错误消息没有显示在 laravel 的表单控件中。我的错误是什么?

虽然我在满足以下条件时可以收到“okey”消息,但我无法清楚地理解错误消息没有显示,因为它不满足条件。

“共享的信息是美丽的。” 路线/web.php

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Website\contact;

Route::get('/register', [contact::class, 'index'])->name('register');
Route::post('/register-submit', [contact::class, 'post'])->name('register.post');

contact.php

<?php

namespace App\Http\Controllers\Website;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class contact extends Controller
{
    public function index()
    {
        return view('Website.contact');
    }

    public function post(Request $request)
    {
        $request->validate([
            'name' => ['required', 'max:10'],
            'email' => ['required'],
        ]);

        echo "okey";
    }
}

contact.blade.php

 <div class="container pt-lg-5">

    @if ($errors->any())
        <div class="alert alert-danger">
            <ul>
                @foreach ($errors->all() as $error)
                    <li>{{ $error }}</li>
                @endforeach
            </ul>
        </div>
    @endif
    <form method="post" action="{{route('register.post')}}">
        @csrf
        <div class="form-group">
            <label for="exampleInputEmail1">name</label>
            <input type="text" class="form-control" name="name">
        </div>
        <div class="form-group">
            <label for="exampleInputPassword1">E-mail</label>
            <input type="email" class="form-control" name="email">
        </div>
        <button type="submit" class="btn btn-primary">Submit</button>
    </form>
</div>
Illuminate\Validation\Validator {#258 ▼
  #translator: Illuminate\Translation\Translator {#255 ▶}
  #container: Illuminate\Foundation\Application {#2 ▶}
  #presenceVerifier: Illuminate\Validation\DatabasePresenceVerifier {#259 ▶}
  #failedRules: array:2 [▼
    "name" => array:1 [▼
      "Required" => []
    ]
    "email" => array:1 [▼
      "Required" => []
    ]
  ]
  #excludeAttributes: []
  #messages: Illuminate\Support\MessageBag {#261 ▼
    #messages: array:2 [▼
      "name" => array:1 [▼
        0 => "The name field is required."
      ]
      "email" => array:1 [▼
        0 => "The email field is required."
      ]
    ]
    #format: ":message"
  }
  #data: array:3 [▶]
  #initialRules: array:2 [▶]
  #rules: array:2 [▼
    "name" => array:2 [▼
      0 => "required"
      1 => "max:10"
    ]
    "email" => array:1 [▼
      0 => "required"
    ]
  ]
  #currentRule: "required"
  #implicitAttributes: []
  #implicitAttributesFormatter: null
  #distinctValues: []
  #after: []
  +customMessages: []
  +fallbackMessages: []
  +customAttributes: []
  +customValues: []
  +extensions: []
  +replacers: []
  #fileRules: array:9 [▼
    0 => "Between"
    1 => "Dimensions"
    2 => "File"
    3 => "Image"
    4 => "Max"
    5 => "Mimes"
    6 => "Mimetypes"
    7 => "Min"
    8 => "Size"
  ]
  #implicitRules: array:10 [▶]
  #dependentRules: array:21 [▼
    0 => "After"
    1 => "AfterOrEqual"
    2 => "Before"
    3 => "BeforeOrEqual"
    4 => "Confirmed"
    5 => "Different"
    6 => "ExcludeIf"
    7 => "ExcludeUnless"
    8 => "ExcludeWithout"
    9 => "Gt"
    10 => "Gte"
    11 => "Lt"
    12 => "Lte"
    13 => "RequiredIf"
    14 => "RequiredUnless"
    15 => "RequiredWith"
    16 => "RequiredWithAll"
    17 => "RequiredWithout"
    18 => "RequiredWithoutAll"
    19 => "Same"
    20 => "Unique"
  ]
  #excludeRules: array:3 [▼
    0 => "ExcludeIf"
    1 => "ExcludeUnless"
    2 => "ExcludeWithout"
  ]
  #sizeRules: array:8 [▼
    0 => "Size"
    1 => "Between"
    2 => "Min"
    3 => "Max"
    4 => "Gt"
    5 => "Lt"
    6 => "Gte"
    7 => "Lte"
  ]
  #numericRules: array:2 [▼
    0 => "Numeric"
    1 => "Integer"
  ]
  #dotPlaceholder: "YEdPXjrZ4cLZZ3wV"
}

【问题讨论】:

  • 你能不能请{{ $errrors ? dd($errors) : null }} 然后在这里发布你得到的输出。如果你在本地使用 Laravel,我建议不要使用 XAMPP
  • 我照你说的做了没有反应
  • 如果你没注意到,sta的代码有一点错别字,应该是{{ $errors ? dd($errors) : null }}

标签: php laravel laravel-blade


【解决方案1】:

如果你愿意用另一种方法来解决你的问题,或者一个快速的解决方案,你可以直接使用 Validator 类, 首先将其添加到您的控制器中, use Illuminate\Support\Facades\Validator; 那么,

public function post(Request $request)
    {
        $validator = Validator::make($request->all(),[
            'name' => ['required', 'max:10'],
            'email' => ['required'],
        ]);
        
        if ($validator->fails()) {
            return redirect()->back()
                        ->withErrors($validator);
        }

        echo "okey";
    }

【讨论】:

  • 我照你说的做了,我没有得到任何反应,再次没有显示。满足条件就“ok”,不满足条件没有反应
  • 您能否在输入 post() 方法时显示dd($request);,以防出现应显示错误的情况
  • 我写了你说的主题,结果在上面
  • 你可以编辑它以显示$request中属性的打开值吗,你发送的是$request,它里面的属性可以扩展
  • 您认为我的路由器有问题吗?因为我输入了电子邮件值“{{old ('email')}}”,所以什么也没发生,它返回为空。
猜你喜欢
  • 2019-11-11
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 2013-08-20
  • 2019-02-03
相关资源
最近更新 更多