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 
  • 通过提供
    X-Requested-With
    头,确保请求是XMLHttpRequest
  • 提供一个标题
  • 使用
    application/json
  • 覆盖请求上的
    wantsJson
    调用以始终返回true。像这样:
类JsonRequest扩展了请求
{
公共函数wantsJson(){
返回true;
}

}

请显示您的
routes/api.php
UserController
store
method@Alejandro请看我最后的编辑!有什么想法吗?终于有了一个有效的答案!谢谢在您给出的示例中,我猜
扩展请求
应该是
扩展表单请求
(在Laravel 5.3中更改)。很奇怪,我没有在文档中找到这个。