Laravel 5.3引发错误formrequest
我在Laravel 5.3
中做了request
类。看起来是这样的:Laravel 5.3引发错误formrequest
<?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'
];
}
}
但是当我使用的是在我的控制,我收到:
NotFoundHttpException in RouteCollection.php line 161:
当我删除该规则,所以它看起来是这样的:
public function rules()
{
return [
];
}
它突然作品!?!?
--UPDATE--
它看起来像验证看起来我web.php
,但我没有一个路线有(这就是为什么我收到异常:NotFoundHttpException in RouteCollection.php line 161:
)。我在5.2
没有这个问题。我该怎么办?
--UPDATE--
我目前的路线:
| Domain | Method | URI | Name | Action | Middleware |
+--------+-----------+-----------------------------------------------+--------------+---------------------------------------------------+------------+
| | POST | api/login | | App\Http\Controllers\Auth\[email protected] | api |
| | GET|HEAD | api/register/{user}/verify/{ConformationCode} | | App\Http\Controllers\Auth\[email protected] | api |
| | GET|HEAD | api/user | user.index | App\Http\Controllers\User\[email protected] | api,active |
| | POST | api/user | user.store | App\Http\Controllers\User\[email protected] | api,active |
| | GET|HEAD | api/user/create | user.create | App\Http\Controllers\User\[email protected] | api,active |
| | GET|HEAD | api/user/{user} | user.show | App\Http\Controllers\User\[email protected] | api,active |
| | PUT|PATCH | api/user/{user} | user.update | App\Http\Controllers\User\[email protected] | api,active |
| | DELETE | api/user/{user} | user.destroy | App\Http\Controllers\User\[email protected] | api,active |
| | GET|HEAD | api/user/{user}/edit | user.edit | App\Http\Controllers\User\[email protected] | api,active
此外,如果此尝试用新鲜Laravel 5.3
安装我收到错误!
也许有事情做与:
在Laravel 5.3
UserStoreRequest
extends FormRequest
(use Illuminate\Foundation\Http\FormRequest;)
而且在Laravel 5.2
UserStoreRequest
extends Request
(use 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\[email protected]');
Route::get('/register/{user}/verify/{ConformationCode}', 'Auth\[email protected]');
Route::put('/test', 'User\[email protected]');
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');
});
存储方法
public function store(StoreRequest $request)
{
if($this->authorize($this->user))
{
$user = $this->userInfo->store($request);
event(new UserRegistered($user));
return response()->json(['success' => 'gebruiker succesvol aangemaakt. Welkom email verzonden.']);
}
return response()->json(['error' => 'niet geautoriseerd'], 401);
}
这是因为FormRequest::response
功能,希望您重定向到一个页面与错误。但是因为你没有任何网络路由(只有api路由),所以它会失败,出现NotFoundHttpException
。如果您有任何Web路由,它会(在内部)将您重定向到根目录。
如果你看看那个FormRequest::response
函数中,你可以看到这一点:
if($this->expectsJson()) {
return new JsonResponse($errors, 422);
}
所以,如果你能在expectsJson
fullfill的expections,它按预期工作。
可以在一对夫妇的方式做到这一点:
- 确保请求是通过提供
X-Requested-With
标头的XMLHttpRequest。 - 供应X-PJAX头
- 供应
Accept
头与application/json
- 覆盖上的要求
wantsJson
调用总是返回true。像这样:
class JsonRequest extends Request { public function wantsJson() { return true; } }
最后一个有效的答案!谢谢。在你给出的例子中,我猜'扩展Request'''应该是'''extends FormRequest'''(在Laravel 5.3中进行了更改)。很奇怪,我没有在文档中找到它。 – Jamie
请出示你的'路线/ api.php'和''UserController'方法store' – alepeino
@Alejandro请参阅我的最后的编辑! – Jamie
任何想法可能是什么? – Jamie