Php Laravel 5.2显示验证错误

Php Laravel 5.2显示验证错误,php,validation,laravel,laravel-5.2,Php,Validation,Laravel,Laravel 5.2,我试图通过使用Laravel的验证器来验证一个简单的表单。看起来验证工作正常,但我无法显示错误。窗体和控制器如下所示 形式 如果从路由中删除web中间件组,则错误显示良好 当前我的routes.php文件如下所示 Route::group(['middleware' => ['web']], function () { Route::get('/teams', 'TeamsController@create'); Route::post('/teams', 'TeamsC

我试图通过使用Laravel的验证器来验证一个简单的表单。看起来验证工作正常,但我无法显示错误。窗体和控制器如下所示

形式

如果从路由中删除web中间件组,则错误显示良好

当前我的
routes.php
文件如下所示

Route::group(['middleware' => ['web']], function () {

    Route::get('/teams', 'TeamsController@create');
    Route::post('/teams', 'TeamsController@store');

});

如何解决此问题?任何帮助都将不胜感激。

在控制器中编写以下代码:

// define rules
  $rules = array(
    'team_name' => 'required|min:10'
   );

$validator = Validator::make(Input::all(), $rules);

if ($validator->fails())
{
  // something
   return Redirect::back()
          ->withErrors($validator) // send back all errors to the login form
          ->withInput();
}
else
{
  // something
   // save your data 
   $team = new Team;
   $team->team_name = $request->team_name;
   $team->save();
}
视图中的更改文件:

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
@if(计数($errors)>0)
    @foreach($errors->all()作为$error)
  • {{$error}}
  • @endforeach
@恩迪夫
在控制器中编写以下代码:

// define rules
  $rules = array(
    'team_name' => 'required|min:10'
   );

$validator = Validator::make(Input::all(), $rules);

if ($validator->fails())
{
  // something
   return Redirect::back()
          ->withErrors($validator) // send back all errors to the login form
          ->withInput();
}
else
{
  // something
   // save your data 
   $team = new Team;
   $team->team_name = $request->team_name;
   $team->save();
}
视图中的更改文件:

@if (count($errors) > 0)
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
@if(计数($errors)>0)
    @foreach($errors->all()作为$error)
  • {{$error}}
  • @endforeach
@恩迪夫
我建议您使用Laravel 跑

添加一些逻辑和规则

class TeamRequest extends Request {

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true; //you can put here any other variable or condition
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            // put  your validation rules here
        ];
    }

}
那么您的控制器代码将如下所示:

public function store(TeamRequest $request)
{

    $team = Team::create($request->all());

    return back();
}
您不再需要验证请求并重定向回错误和其他内容,laravel将为您执行此操作

您的代码看起来更干净整洁,不是吗?

我建议您使用Laravel 跑

添加一些逻辑和规则

class TeamRequest extends Request {

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true; //you can put here any other variable or condition
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            // put  your validation rules here
        ];
    }

}
那么您的控制器代码将如下所示:

public function store(TeamRequest $request)
{

    $team = Team::create($request->all());

    return back();
}
您不再需要验证请求并重定向回错误和其他内容,laravel将为您执行此操作

您的代码看起来更干净整洁,不是吗?

经过一点研究,我发现Laravel 5.2有一个
路由服务提供商
,它包括所有路由的web中间件组。因此,我不必手动将web中间件组添加到路由中。我刚刚从
routes.php
中删除了它,问题就解决了。

经过一点研究,我发现Laravel 5.2有一个
RouteServiceProvider
,它包括所有路由的web中间件组。因此,我不必手动将web中间件组添加到路由中。我刚刚从
routes.php
中删除了它,问题就解决了

如果从路由中删除web中间件组,则错误显示良好

在Laravel 5.2中,
web
middleware自动应用于
routes.php中的路由,因此无需再次应用
web
中间件。它在
RouteServiceProvider
mapWebRoutes()
方法中定义

如果从路由中删除web中间件组,则错误显示良好


在Laravel 5.2中,
web
middleware自动应用于
routes.php中的路由,因此无需再次应用
web
中间件。它是在
RouteServiceProvider的
mapWebRoutes()
方法中定义的

在Laravel5中,首先需要创建处理验证的请求类

php artisan make:request RequestName
您将在中找到您提出的请求类

'app/http/Requests/RequestName.php'

在rules函数中,您可以处理验证

public function rules()
    {
        return [
            // put  your validation rules here
            'team_name' => 'required|min:10'
        ];
    }
最后在你的控制器里

use App\Http\Requests\RequestName;

public function store(RequestName $request) {
    Team::create($request->all());
    return Redirect::back();
} 

更多说明

为什么在使用laravel 5时使用类似laravel 4的验证

在Laravel5中,首先需要创建处理验证的请求类

php artisan make:request RequestName
您将在中找到您提出的请求类

'app/http/Requests/RequestName.php'

在rules函数中,您可以处理验证

public function rules()
    {
        return [
            // put  your validation rules here
            'team_name' => 'required|min:10'
        ];
    }
最后在你的控制器里

use App\Http\Requests\RequestName;

public function store(RequestName $request) {
    Team::create($request->all());
    return Redirect::back();
} 

更多说明

尝试,未更改。尝试,未更改。