所以我正在使用 Laravel 5 安装,并且像一个优秀的程序员一样,我正在尝试使用 Laravel 中新的表单请求功能从我的 Controller 中获取验证逻辑。
所以我继续创建一个名为 CreateTenantRequest 的表单请求,如下所示:
php artisan make:request CreateTenantRequest
默认情况下,它在 authorize
方法中返回一个 false
,并且它可以正常工作。如果我发出请求,它会说禁止。但是后来我更新了规则并将 authorize
方法设置为 true
现在当我从 Postman 发出相同的请求时,它说:
NotFoundHttpException in RouteCollection.php line 161:
这很荒谬,因为当我将其更改为 false 时,它会返回禁止罚款?
我错过了什么或做错了什么?
虽然我猜这无关紧要,但我的规则数组如下:
return [
// Tenant details
'name' => 'required|max:255',
'username' => 'required|max:255|unique:tenant',
// Tenant Admin details
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required|email|max:255',
'password' => 'required|confirmed|min:6',
];
路线文件:
<?php
Route::group(['prefix' => 'api'], function(){
Route::post('authenticate', 'Auth\AuthController@authenticate');
// SuperAdmin Group
Route::group(['namespace' => 'Archive', 'middleware' => 'superadmin'], function(){
Route::resource('tenants', 'TenantController');
Route::get('tenants/{id}/users', 'TenantController@showUsersForTenant');
});
// Tenant Group
Route::group(['namespace' => 'Tenant'], function(){
Route::resource('roles', 'RoleController');
Route::resource('users', 'UserController');
});
// Remove before production
// Only for testing purposes
Route::get('test', function(){
// return JWTAuth::parseToken()->getPayload()->get('username');
});
});
最佳答案
所以在与 shock_gone_wild 进行投标讨论后,我意识到请求不是 ajax,因此 laravel 正在重新路由到 session 错误的 url。
我正在使用 Postman REST 客户端测试 API,默认情况下它会发送基本的 HTTP 请求,但是当像这样添加 header 时:
X-Requested-With:XMLHttpRequest
它发出 Ajax 请求,然后 laravel 检查它是否确实是 ajax,因此它没有路由到 url,而是返回 JSON 中的验证错误。
因此,无论何时,如果有人正在创建分离的 Web 服务并尝试使用 Postman 对其进行测试,请使用 header 进行测试,以便您可以在您的应用程序中模拟实际的 ajax 请求。
关于php - 为什么我的创建表单请求在 Laravel5 中抛出 404 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33117664/