Laravel-5.5:为什么我在规则'required'中使用重定向?

Laravel-5.5:Why redirected if I use in rules 'required'?

我有简单的网络路由。

代码:

Route::group(['middleware' => ['web']], function () {
    Route::group(['prefix' => 'inbox', 'middleware' => 'auth'], function(){
        Route::match(['get', 'post'], '/compose', 'InboxController@compose')->name('compose');
    }); 
});

我有简单的方法compose()

代码:

public function compose(InboxRequest $request)
{   
    return view('compose');
}

和 InboxRequest 文件。

代码

public function rules()
{
   return [
      'receiver' => 'required'
   ];
}

我的 HTML 带有字段的表单

<form role="form" class="form-horizontal" action="{{ route('compose') }}" method="POST">
    {{ csrf_field() }}
    <label class="col-lg-2 control-label">To</label>
    <input type="text" placeholder="" id="inputEmail1" class="form-control" name="receiver" value="{{old('receiver')}}">

    <label class="col-lg-2 control-label">From</label>
    <input type="text" placeholder="" id="cc" class="form-control" name="sender" value="{{ Auth::user()->email }}" disabled="">
    <input type="text" placeholder="" id="inputPassword1" class="form-control" name="subject" value="{{old('subject')}}">
    <button class="btn btn-success" type="submit">Send</button>
</form>

来自the docs

If validation fails, a redirect response will be generated to send the user back to their previous location.

此外,您不应在 5.5 中手动应用 web 中间件。

我想你没有发送 'receiver' 参数到路由。

InboxRequest 是对请求参数的验证,这个请求你不发送接收者。

使用 get 或 post 接收器数据调用 /compose 路由。

示例:/compose?receiver=test

Laravel 5.5到所有已经连接的路由middleware['web']。如果在路由中已经需要中间件,那么你应该在文件 web.php 中将路由划分为:POSTGET

Route::group(['prefix' => 'inbox', 'middleware' => 'auth'], function(){
    Route::get('/compose', 'InboxController@compose')->name('compose'); 
    Route::post('/compose', 'InboxController@send')->name('send');
});

HTML 形式:

<form role="form" class="form-horizontal" action="{{ route('send') }}" method="POST">
    {{ csrf_field() }}
    <label class="col-lg-2 control-label">To</label>
    <input type="text" placeholder="" id="inputEmail1" class="form-control" name="receiver" value="{{old('receiver')}}">

    <label class="col-lg-2 control-label">From</label>
    <input type="text" placeholder="" id="cc" class="form-control" name="sender" value="{{ Auth::user()->email }}" disabled="">
    <input type="text" placeholder="" id="inputPassword1" class="form-control" name="subject" value="{{old('subject')}}">
    <button class="btn btn-success" type="submit">Send</button>
</form>

和InboxRequest文件,你设置authorize()return true;

       /**
         * Determine if the user is authorized to make this request.
         *
         * @return bool
         */
        public function authorize()
        {
            return true;
        }
        public function rules()
        {
           return [
              'receiver' => 'required'
          ];
        }