Laravel MessageBag错误数组在视图中为空,但如果我杀死脚本,则会包含内容

juzqafwq  于 2023-06-30  发布在  其他
关注(0)|答案(6)|浏览(101)

我试图将错误返回到我的视图,这是我的控制器TestcategoryController的一部分

$rules =array(
        'name' => 'required'
    );
    $validator = Validator::make(Input::all(), $rules);
    //process
    if($validator->fails()){
        return Redirect::to('testcategory/create')->withErrors($validator);
    }

在视图testcategory/create中,如果我尝试输出如下错误

@if($errors->any())         
            {{ $errors->first('name') }}
        @endif

我什么都没得到。但是如果我{{dd($errors)}}我得到

object(Illuminate\Support\ViewErrorBag)#91 (1) { ["bags":protected]=> array(1) { 
      ["default"]=> object(Illuminate\Support\MessageBag)#92 (2) 
      { ["messages":protected]=>   array(1) 
      { ["name"]=> array(1) { [0]=> string(27) "The name field is required." } }  
      ["format":protected]=> string(8) ":message" } } }

我得到错误的唯一方法是如果我杀死脚本。我做错了什么?

wmvff8tz

wmvff8tz1#

另一个问题可能是$errors没有保存到Session变量$errors中,视图中没有显示任何内容。
下面是同一问题的一个例子:http://laravel.io/forum/03-28-2016-errors-variable-empty-after-failed-validation
对我来说,上面链接中定义的解决方案起作用了。解决方案:在app\Http\Kernel.php中将\Illuminate\Session\Middleware\StartSession::class,从$middlewareGroups移动到$middleware

之前

之后

rbl8hiat

rbl8hiat2#

如果你在你的例子中什么都没有得到,那么这意味着你已经用其他东西或空对象覆盖了你的$errors对象--检查你传递给视图的代码和数据。你的代码是完全有效的,工作良好-我已经在本地测试。也许,你传递了空的$errors对象给你的子视图,但是在其他视图中使用了正确的对象。

mnemlml8

mnemlml83#

你需要像这样使用它:

{{ $errors->getBag('default')->first('name') }}
uurity8g

uurity8g4#

Route::group(['middleware' => ['web']], function() {
    Route::get('/home', 'HomeController@index')->name('home');
    });

添加中间件,并解决了..

sbtkgmzw

sbtkgmzw5#

我在使用Laravel 8.0时遇到了同样的问题
我解决这个问题的唯一方法是一层一层地输入错误包,直到我手动得到消息:

@if (count($errors->getBags()))
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->getBags() as $bag)
                @foreach ($bag->getMessages() as $messages)
                    @foreach ($messages as $message)
                        <li>{{ $message }}</li>
                    @endforeach
                @endforeach
            @endforeach
        </ul>
    </div>
@endif
pbwdgjma

pbwdgjma6#

我也遇到过类似的问题--我的视图中没有收到错误消息。我通过在.env文件中设置SESSION_DRIVER=file得到了帮助。在此之前,指定了值“cookie”。

相关问题