Laravel错误未传递给视图

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">

我无法解释为什么laravel blade没有捕获我的错误验证,也没有将其传递给我的视图。 详细地

我的刀片模板中确实有错误代码段 下面是我的正确验证 我错过了什么

多谢各位

我看到的是json消息,而不是刀片模板中的消息

{ 消息:给定的数据无效。, 状态代码:500 }

我使用这个代码片段让用户知道错误

@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'); 
};