2016-09-28 9 views
3

requestクラスをLaravel 5.3に作成しました。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--

(私は例外受ける理由です:NotFoundHttpException in RouteCollection.php line 161:)にバリが私web.phpに見えますが、私はそこにルートを持っていないように見えます。 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.3UserStoreRequest

extends FormRequest (use Illuminate\Foundation\Http\FormRequest;)

そしてLaravel 5.2UserStoreRequest

extends Request 中で

--EDIT--

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); 
    } 
+0

私の最後の編集を参照してください。あなたの 'ルート/ api.php'と' 'UserController' store'方法 – alepeino

+0

@Alejandroをご提示ください! – Jamie

+0

何ができるのでしょうか? – Jamie

答えて

3

FormRequest::response機能は、ページにリダイレクトしたいためですエラーが発生しました。しかし、Webルート(APIルートのみ)がないため、NotFoundHttpExceptionで失敗します。 Webルートがあれば、内部的にルートにリダイレクトされます。

あなたはそのFormRequest::response関数の内部を見る場合は、このビットを見ることができます:

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

あなたが期待どおりに動作しますが、expectsJsonでexpectionsを気力することができますので、もし。あなたはいくつかの方法でこれを行うことができます

  • は、要求がX-Requested-Withヘッダを供給することによりXMLHttpRequestのあることを確認してください。
  • 供給がapplication/json
  • X-PJAXヘッダ
  • サプライAcceptヘッダは常にtrueを返すように要求にwantsJson呼び出しを上書きします。これと同じように:

class JsonRequest extends Request { public function wantsJson() { return true; } }

+0

最後にその答えが動作します!ありがとう。あなたが与えた例では、 '' extends Request'''は '' extends FormRequest'''(Laravel 5.3で変更)でなければなりません。私がドキュメントでこれを見つけられなかったことは非常に奇妙です。 – Jamie

関連する問題