Laravel错误未传递给视图
我无法解释为什么laravel blade没有捕获我的错误验证,也没有将其传递给我的视图。 详细地 我的刀片模板中确实有错误代码段 下面是我的正确验证 我错过了什么 多谢各位 我看到的是json消息,而不是刀片模板中的消息 { 消息:给定的数据无效。, 状态代码:500 } 我使用这个代码片段让用户知道错误Laravel错误未传递给视图,laravel,error-handling,laravel-blade,Laravel,Error Handling,Laravel Blade,我无法解释为什么laravel blade没有捕获我的错误验证,也没有将其传递给我的视图。 详细地 我的刀片模板中确实有错误代码段 下面是我的正确验证 我错过了什么 多谢各位 我看到的是json消息,而不是刀片模板中的消息 { 消息:给定的数据无效。, 状态代码:500 } 我使用这个代码片段让用户知道错误 @if(count($errors)) <div class="form-group"> <div class="alert alert-danger">
@if(count($errors))
<div class="form-group">
<div class="alert alert-danger">
<ul>
@if($errors->all())
@foreach($errors->all() as $error)
<li>{{$error}}</li>
@endforeach
@endif
</ul>
</div>
</div> @endif
编辑:
这是web.php中的路由
Route::post('saveemail', 'SaveSubscriberEmailController@saveEmail');
这就是方法
namespace App\Http\Controllers;
use App\subscriber;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Ramsey\Uuid\Uuid;
class SaveSubscriberEmailController extends Controller
{
public function saveEmail(Request $request)
{
$request->validate([
'email' => 'required|email|unique:subscribers|max:255',
]);
$uuid = Uuid::uuid4();
$subscriber = new subscriber();
$subscriber->email = $request->email;
$subscriber->uuid = $uuid->toString();
$subscriber->created_at = Carbon::now();
$subscriber->save();
flash('Registration conformation email has been sent. Please check your mailbox. Thank you!')->success();
return redirect()->back();
}
}
发送路线::发送“保存电子邮件”SaveSubscriberEmailController@saveEmail';
将此路由放入web中间件。你可以这样做
Route::middleware(['web'])->group(function () {
Route::post('saveemail', 'SaveSubscriberEmailController@saveEmail');
});
将控制器更改为此
class SaveSubscriberEmailController extends Controller
{
public function saveEmail(Request $request)
{
$validator = validate($request->all(),[
'email' => 'required|email|unique:subscribers|max:255',
]);
if($validator->fails()){
return back()->withErrors($validator);
}
$uuid = Uuid::uuid4();
$subscriber = new subscriber();
$subscriber->email = $request->email;
$subscriber->uuid = $uuid->toString();
$subscriber->created_at = Carbon::now();
$subscriber->save();
flash('Registration conformation email has been sent. Please check your mailbox. Thank you!')->success();
return redirect()->back();
}
}
希望这对您有所帮助。如果您遇到此错误,请求验证只发送422而不是500的错误。这是因为其他原因,formRequest错误包不会捕获此错误。我以前遇到过此问题,解决此问题的方法是使用包含中间件的中间件组包装路由\照亮\View\Middleware\ShareErrorsFromSession::class。它将会话的错误添加到视图中 在Kernel.php类的受保护$middlewareGroups数组中,它可能看起来像:
'web' => [
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
// other middleware
],
然后,在您声明路线的地方,您可以执行以下操作:
Route::group(['middleware' => ['web']], function () {
Route::post('saveemail', 'SaveSubscriberEmailController@saveEmail');
};
您的路由应该在web中间件中,否则会话将无法工作,这包括$errors variableadded方法和路由定义。它位于routes/web.php中,因此它应该位于web中间件中,web.php也自动位于web中间件中。您可以通过调用php artisan routes:list来检查它。您应该在中间件列中看到路由旁边的web。它位于web路由中,由php artisan路由确认:list@Vojta你必须使用威瑟罗,看看我的答案,我已经更新了。不幸的是没有改变。您的代码不会像验证失败一样执行,方法的其余部分不会执行。@Vojta它与dingo API无关。
Route::group(['middleware' => ['web']], function () {
Route::post('saveemail', 'SaveSubscriberEmailController@saveEmail');
};