gpt4 book ai didi

php - Laravel 5.3 抛出错误表单请求

转载 作者:可可西里 更新时间:2023-11-01 01:15:36 25 4
gpt4 key购买 nike

我在 Laravel 5.3 中创建了一个 request 类。看起来像这样:

<?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'
];
}
}

但是当我在我的 Controller 中使用它时,我收到:

NotFoundHttpException in RouteCollection.php line 161:

当我删除规则时,它看起来像这样:

public function rules()
{
return [

];
}

它突然起作用了!?!?

--更新--

看起来验证器看起来在我的 web.php 中,但我在那里没有路由(这就是我收到异常的原因:RouteCollection.php 第 161 行中的 NotFoundHttpException:)。我在 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 安装,我会收到错误消息!

可能与以下内容有关:

Laravel 5.3 UserStoreRequest

扩展 FormRequest(使用 Illuminate\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');
});

存储方式

 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。如果您有任何网络路由,它会(在内部)将您重定向到根目录。

如果你看看里面的 FormRequest::response功能,你可以看到这一点:

if($this->expectsJson()) {
return new JsonResponse($errors, 422);
}

因此,如果您可以满足 expectsJson 中的期望,它就会按预期工作。

您可以通过多种方式做到这一点:

  • 通过提供 X-Requested-With header 确保请求是 XMLHttpRequest。
  • 提供 X-PJAX标题
  • 使用 application/json 提供一个 Accept header
  • 覆盖对请求的 wantsJson 调用以始终返回 true。像这样:

类 JsonRequest 扩展请求
{
公共(public)功能 wantsJson() {
返回真;
}
}

关于php - Laravel 5.3 抛出错误表单请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39752253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com