Php Laravel 5.3在请求中抛出错误
我在Php Laravel 5.3在请求中抛出错误,php,request,laravel-5.3,Php,Request,Laravel 5.3,我在Laravel 5.3中提出了请求课程。看起来像这样: <?php namespace App\Http\Requests\User; use Illuminate\Foundation\Http\FormRequest; class StoreRequest extends FormRequest { /** * Determine if the user is authorized to make this request. * * @r
Laravel 5.3
中提出了请求
课程。看起来像这样:
<?php
namespace App\Http\Requests\User;
use Illuminate\Foundation\Http\FormRequest;
class StoreRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|max:25|min:2'
];
}
}
public function rules()
{
return [
];
}
当我删除规则时,如下所示:
<?php
namespace App\Http\Requests\User;
use Illuminate\Foundation\Http\FormRequest;
class StoreRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|max:25|min:2'
];
}
}
public function rules()
{
return [
];
}
它突然起作用了
--更新--
验证器看起来像是在我的web.php
中出现的,但我在那里没有路由(这就是我收到异常的原因:NotFoundHttpException in RouteCollection.php第161行:
)。我在5.2
中没有这个问题。我该怎么办
--更新--
我的当前路线:
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+-----------------------------------------------+--------------+---------------------------------------------------+------------+
| | POST | api/login | | App\Http\Controllers\Auth\AuthController@login | api |
| | GET|HEAD | api/register/{user}/verify/{ConformationCode} | | App\Http\Controllers\Auth\AdminController@confirm | api |
| | GET|HEAD | api/user | user.index | App\Http\Controllers\User\UserController@index | api,active |
| | POST | api/user | user.store | App\Http\Controllers\User\UserController@store | api,active |
| | GET|HEAD | api/user/create | user.create | App\Http\Controllers\User\UserController@create | api,active |
| | GET|HEAD | api/user/{user} | user.show | App\Http\Controllers\User\UserController@show | api,active |
| | PUT|PATCH | api/user/{user} | user.update | App\Http\Controllers\User\UserController@update | api,active |
| | DELETE | api/user/{user} | user.destroy | App\Http\Controllers\User\UserController@destroy | api,active |
| | GET|HEAD | api/user/{user}/edit | user.edit | App\Http\Controllers\User\UserController@edit | api,active
另外,如果尝试使用全新的Laravel 5.3
安装,我会收到错误
也许这与:
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+-----------------------------------------------+--------------+---------------------------------------------------+------------+
| | POST | api/login | | App\Http\Controllers\Auth\AuthController@login | api |
| | GET|HEAD | api/register/{user}/verify/{ConformationCode} | | App\Http\Controllers\Auth\AdminController@confirm | api |
| | GET|HEAD | api/user | user.index | App\Http\Controllers\User\UserController@index | api,active |
| | POST | api/user | user.store | App\Http\Controllers\User\UserController@store | api,active |
| | GET|HEAD | api/user/create | user.create | App\Http\Controllers\User\UserController@create | api,active |
| | GET|HEAD | api/user/{user} | user.show | App\Http\Controllers\User\UserController@show | api,active |
| | PUT|PATCH | api/user/{user} | user.update | App\Http\Controllers\User\UserController@update | api,active |
| | DELETE | api/user/{user} | user.destroy | App\Http\Controllers\User\UserController@destroy | api,active |
| | GET|HEAD | api/user/{user}/edit | user.edit | App\Http\Controllers\User\UserController@edit | api,active
在Laravel 5.3
UserStoreRequest
扩展FormRequest
(使用illumb\Foundation\Http\FormRequest;)
在Laravel 5.2
UserStoreRequest
扩展请求
(使用App\Http\Requests\Request;)
--编辑--
API.PHP
<?php
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::post('/login', 'Auth\AuthController@login');
Route::get('/register/{user}/verify/{ConformationCode}', 'Auth\AdminController@confirm');
Route::put('/test', 'User\UserController@test');
Route::group(['middleware' => ['active']], function () {
Route::resource('user', 'User\UserController');
Route::resource('corporation', 'Corporation\CorporationController');
Route::resource('forum', 'Forum\ForumController');
Route::resource('topic', 'Topic\TopicController');
});
这是因为
FormRequest::response
函数希望将您重定向到包含错误的页面。但是,由于您没有任何web路由(只有api路由),它将失败,并出现NotFoundHttpException
。如果您有任何web路由,它会(在内部)将您重定向到根目录
如果您查看该函数的内部,可以看到以下内容:
if($this->expectsJson()) {
return new JsonResponse($errors, 422);
}
因此,如果您可以在expectsJson
中完成预期,它将按预期工作
您可以通过两种方式来实现这一点:
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+-----------------------------------------------+--------------+---------------------------------------------------+------------+
| | POST | api/login | | App\Http\Controllers\Auth\AuthController@login | api |
| | GET|HEAD | api/register/{user}/verify/{ConformationCode} | | App\Http\Controllers\Auth\AdminController@confirm | api |
| | GET|HEAD | api/user | user.index | App\Http\Controllers\User\UserController@index | api,active |
| | POST | api/user | user.store | App\Http\Controllers\User\UserController@store | api,active |
| | GET|HEAD | api/user/create | user.create | App\Http\Controllers\User\UserController@create | api,active |
| | GET|HEAD | api/user/{user} | user.show | App\Http\Controllers\User\UserController@show | api,active |
| | PUT|PATCH | api/user/{user} | user.update | App\Http\Controllers\User\UserController@update | api,active |
| | DELETE | api/user/{user} | user.destroy | App\Http\Controllers\User\UserController@destroy | api,active |
| | GET|HEAD | api/user/{user}/edit | user.edit | App\Http\Controllers\User\UserController@edit | api,active
- 通过提供
头,确保请求是XMLHttpRequestX-Requested-With
- 提供一个标题
- 使用
application/json
- 覆盖请求上的
调用以始终返回true。像这样:wantsJson
类JsonRequest扩展了请求
{
公共函数wantsJson(){
返回true;
}
}
请显示您的routes/api.php
和UserController
store
method@Alejandro请看我最后的编辑!有什么想法吗?终于有了一个有效的答案!谢谢在您给出的示例中,我猜扩展请求
应该是扩展表单请求
(在Laravel 5.3中更改)。很奇怪,我没有在文档中找到这个。