Laravel 5.2.29 $错误处理和请求文件

时间:2016-04-18 08:19:01

标签: php forms laravel-5.2

我在我的一个项目中使用Laravel 5.2.29。我正在使用Laravel Request文件来验证我的用户输入。如果验证器失败,则错误消息应显示在输入字段下。

但问题是,如果验证器失败,它不会显示任何错误消息,也不会提交表单。这里是刀片文件,需要3个输入,电子邮件/密码和密码确认

test.blade.php

JsonObject searchId = jsonObject
                .getAsJsonObject("body")
                .getAsJsonObject("search")
                .getAsJsonObject("searchId");
searchId.addProperty("AddANewFieldHere","2016-04-18");

testRequest.php

<!-- email input-->
<div class="form-group {{ $errors->has('email') ? 'has-error' : '' }}">
    <label class="col-md-4 control-label" for="email">email</label>
      <div class="col-md-4">
        <input id="Name" name="email" type="text" placeholder="Enter email address" class="form-control input-md" required="">
        {!! $errors->first('email','<span class="help-block">:message</span>') !!}
      </div>
</div>

<div class="form-group {{ $errors->has('password') ? 'has-error' : '' }}">
    <label class="col-md-4 control-label" for="password">password</label>
      <div class="col-md-4">
        <input id="Name" name="password" type="password"  class="form-control input-md" required="">
        {!! $errors->first('password','<span class="help-block">:message</span>') !!}
      </div>
</div>
<div class="form-group {{ $errors->has('password_confirmation') ? 'has-error' : '' }}">
   <label class="col-md-4 control-label" for="password">Confirm Password</label>
    <div class="col-md-4">
      <input id="Name" name="password_confirmation" type="password"  class="form-control input-md" required="">
      {!! $errors->first('password_confirmation','<span class="help-block">:message</span>') !!}
  </div>
</div>


   <!-- Button -->
<div class="form-group">
  <label class="col-md-4 control-label" for=""></label>
  <div class="col-md-4">
    <button id="" name="" class="btn btn-primary">Submit</button>
  </div>
</div>

testController.php(资源控制器)

public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'email'     => 'required|email',
            'password'  => 'required|min:3|confirmed'
        ];
    }

routes.php文件

public function store(testRequest $request)
    {
        $test = User::create([
          'email'    => $request->email,
          'password' => bcrypt($request->password);
        ]);
        return redirect("/");
    }

当我点击提交按钮时,在确认密码字段中使用不同的密码,它不会给我任何错误。不提交表格;它至少应该说密码确认不匹配。我认为我的代码没有错。它是版本5.2.29的问题吗?完全相同的事情适用于5.2.22。

1 个答案:

答案 0 :(得分:0)

我发现了这个错误。从laravel 5.2.29开始,默认情况下,Web中间件将应用于所有路由。因此,编写以下代码不起作用。

Route::group(['middleware'=>['web']],function(){
  Route::resource('test','testController');
});

只需编写Route::resource('test','testController');即可查看路由服务提供商