未定义的变量:Laravel中的错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未定义的变量:Laravel中的错误相关的知识,希望对你有一定的参考价值。
当我想在我的laravel项目中注册用户时,页面总是说
未定义的变量:错误(查看:/var/www/resources/views/auth/register.blade.php)“
根据Laravel文档,$errors
应该总是自动设置:
因此,重要的是要注意每个请求的所有视图中都会始终提供$ errors变量,从而可以方便地假设$ errors变量始终定义并且可以安全使用。
我使用时在每个视图上都有这个:
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
或者当我想使用$errors
变量时的任何其他方式。
为什么是这样?我之前从未遇到过这个问题。
有谁可以帮助我吗?
你应该确保在app/Http/Kernel.php
的middlewareGroups
web
中你有IlluminateViewMiddlewareShareErrorsFromSession::class,
:
https://github.com/laravel/laravel/blob/master/app/Http/Kernel.php
在这个数组中。与'middleware' => 'web'
比较
编辑
看来你需要为你正在使用的路线添加IlluminateViewMiddlewareShareErrorsFromSession::class,
或将$middleware
添加到Route::group(['middleware' => ['web']], function () {
//routes here
});
属性数组中
or
在routes.php文件中尝试在以下块中创建路由
web
更新版LARAVEL应用程序的更新
请注意,如果您使用web
中间件两次,您可能会遇到问题。 Laravel应用程序5.2.27发生了变化(不要将它与您目前使用的Laravel框架混淆 - 您可以使用Laravel框架,例如5.2.31,但在5.2.24版中使用Laravel应用程序),其中app/Providers/RouteServiceProvider.php
中间件是自动应用于所有路线。因此,如果出现问题,您应该打开RouteServiceProvider for Laravel application 5.2.24文件并验证其内容。
你也可以在这里比较它:
如果您有更新的版本(自动应用web
中间件),您不应再使用routes.php
中的RouteServiceProvider
中间件,或者您应该修改您的web
方法以不应用web
组中间件。否则,如果routes.php
中间件组自动应用于此提供程序,并且您在routes.php
中也使用它,则可能会得到非常意外的结果。
它实际上并不是错误,它警告你可以使用php error_reporting()函数删除
我通过使用删除了我的laravel 5.6中的警告
error_reporting(E_ALL ^ E_NOTICE);
更多细节:http://php.net/manual/en/function.error-reporting.php
希望它会对你有所帮助,谢谢
我在Laravel 5.2.x中遇到了同样的问题。
在qazxsw poi文件里面尝试创建你的路线
Route::group(['middleware' => ['web']], function () {
//routes here
}
声明。
我有类似的问题,并通过添加路由到中间件属性数组解决了这个问题,
但
它只是在随后调用php artisan route:cache
(清除路由缓存)后才起作用。
我希望你们中的一些人会觉得这很有用。
我也看到了这个错误,后来意识到我已经使用WithoutMiddleware
特性作为绕过这个特定测试的身份验证的手段,但它最终也删除了验证错误绑定。所以我不得不停止使用特征来保持视图正常工作。
转到App Http Kernel.php文件。将$middlewareGroups
属性的所有内容移至$middleware
。
检查更多细节 - http://www.tisuchi.com/laravel-5-2-undefined-variable-error-validation/
另外要注意:如果你编写测试并且你的视图有$ errors变量,请确保你不使用WithoutMiddleware特性。
count不是真的可行,因为它假定变量已经存在。将条件检查更改为:@if($errors->has())
或只是@if($errors)
此外,如果您要重定向,请确保在您的控制器中使用它
return redirect()->back()->with('errors', $validator->messages());
编辑:现在看到你正在使用L5.2这可能会回答你的问题 - 你需要把你的路线放在路线组。
protected $middleware = [ IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode::class,
SocialHttpMiddlewareEncryptCookies::class,
IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
IlluminateSessionMiddlewareStartSession::class,
IlluminateViewMiddlewareShareErrorsFromSession::class,
SocialHttpMiddlewareVerifyCsrfToken::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
],
'api' => [
'throttle:60,1',
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
让你的内核看起来像这样
使用此方法可以解决您的问题。
Route::group(['middleware' => ['web']], function () {
//routes should go here
});
如果这对您没有帮助,除了上面的代码之外,只需运行以下artisan命令:
php artisan key:generate
我用5.2来解决这个问题。*
以上是关于未定义的变量:Laravel中的错误的主要内容,如果未能解决你的问题,请参考以下文章