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
中将路由划分为:POST
和 GET
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'
];
}
我有简单的网络路由。
代码:
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
中将路由划分为:POST
和 GET
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'
];
}