Php 未定义变量:错误--Laravel 5.2
我是Laravel的新手,正在使用Laravel 5.2版 我分别创建了名为ArticlesController和CreateArticleRequest的控制器和请求,并定义了一些验证规则 CreateArticleRequestPhp 未定义变量:错误--Laravel 5.2,php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,我是Laravel的新手,正在使用Laravel 5.2版 我分别创建了名为ArticlesController和CreateArticleRequest的控制器和请求,并定义了一些验证规则 CreateArticleRequest <?php namespace App\Http\Requests; use App\Http\Requests\Request; class CreateArticleRequest extends Request { public funct
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class CreateArticleRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'title' => 'required|min:3',
'body' => 'required|max:400',
'published_at' => 'required|date',
];
}
}
使用此代码,您可以捕获错误并显示它们:
@if ($errors->any())
<div class='alert alert-danger'>
@foreach ( $errors->all() as $error )
<p>{{ $error }}</p>
@endforeach
</div>
@endif
@if($errors->any())
@foreach($errors->all()作为$error)
{{$error}}
@endforeach
@恩迪夫
这是5.2升级的一个重大问题。发生的情况是,负责将错误
变量提供给所有视图的中间件没有被使用,因为它已从全局中间件移动到web
中间件组
有两种方法可以解决此问题:
kernel.php
文件(app/Http/kernel.php)中,可以将middleware\light\View\middleware\ShareErrorsFromSession::class
移回protected$middleware
属性web
路由,并对其应用web中间件:
Route::group(['middleware' => 'web'], function() {
// Place all your web routes here...(Cut all `Route` which are define in `Route file`, paste here)
});
只需从routes.php文件中剪切所有路由并将其粘贴到中间件组“web”之间,如下所示:
发布此信息,因为它可能对其他人有用 正如Praveen在第1个解决方案中提到的,在您的
Kernel.php
文件(app/Http/Kernel.php
)中,移动\illumb\View\Middleware\ShareErrorsFromSession::class
从$middlewareGroups
到protected$middleware
属性,但该属性将开始抛出错误“会话存储未按请求设置”
要解决这一问题,
\Lightning\Session\Middleware\StartSession::class,
到$Middleware属性
。对于5.2,只需将包含错误变量的路由移动到Middleware组,这是因为在composer更新过程中未更新下面的文件,因此没有实现mapWebRoutes
方法
app/Providers/RouteServiceProvider.php
从新安装中复制此文件,它将正常工作。更好的方法是,按照文档上的升级路径进行操作。使用
isset
进行基本检查,这样如果未设置变量,就不会回显。@MichaelSørensen它是Laravel,该变量应该在所有视图中始终可用。因此,如果它不是在一个视图中设置的,那么它很可能是一个需要全局解决的问题。@MichaelSørensen我正在学习laravel教程,在那里我做了与我相同的工作,但它显示了未定义的变量$errors,我还使用isset($error)进行了尝试检查,但在验证时,它不会显示任何错误。是的,我们可以通过这种方式捕获错误消息,但这不是我的问题。我的问题是,我面临这样的错误:未定义变量$errors。请仔细阅读问题。也许这可以帮助您:@Kokno的注释可能是一个答案。。链接上的响应很好地解释了从5.1到5.2的变化。在这个链接中可以找到带有屏幕截图的相同解决方案:中间件属性
?这样做给了我一个FatalErrorException
--调用null上的成员函数parameters()。
Route::group(['middleware' => 'web'], function() {
// Place all your web routes here...(Cut all `Route` which are define in `Route file`, paste here)
});
app/Providers/RouteServiceProvider.php