2016-08-30 10 views
0

以下は私のコントローラの動作方法です。あなたは私が私の要求クラスは以下の通りです404テスト時のエラーChrome Postman Extensionによるリクエストクラスの検証

public function store(RoleRequest $request) 
{ 
} 

データベースにデータを保存するために行く前に検証するための要求クラスのPARAMを渡す見ることができます。

class RoleRequest extends Request 
{ 
    private $Role; 

    public function __construct(IRole $_role) { 
     $this->Role = $_role; 
    }   
    public function authorize() 
    { 
     return true; 
    }  
    public function rules() 
    { 
     return [ 
      'Role' => 'required|max:20|min:4, 
     ]; 
    }  
} 

上記のコードは、Webページ(ブレード)で実行すると完全に機能します。

APIを保存するためにもう1つコントローラを作成しました。以下は、私はロール名とRequestクラスのためだけに1文字を入力すると、コード

class RoleApiController extends Controller 
{ 
    public function store(RoleRequest $request) 
    { 

    } 
} 

問題は、検証を課し、来て、私は404エラー私はChromeでポストマン拡張からのリクエストを送信しています。この時間を取得しています。

エラーの詳細

enter image description here

+0

どのように見えるか、あなたのルート?? – Maraboc

+0

ルートを表示することができます。私が追加したかったのは、検証IDが課されていなければ何の問題もないということです。 ChromeのPostman Extensionからのリクエストの送信中に検証が行われている場合のみ問題です。また、Webブラウザを介してリクエストを送信する場合に検証が行われているときに問題はありません。 – Pankaj

答えて

1

検証Requestクラスチェックリクエストは、Ajaxリクエストや通常のリクエストである場合。

通常のリクエストの場合は、redirect()->back()のセッションで確認メッセージが表示されます。

ajaxリクエストの場合は、jsonオブジェクトに検証メッセージが表示されます。

例えばjQueryのようなフロントエンドフレームワーク/ライブラリは、バックエンドにajaxリクエストであることを知らせるためにajaxリクエストにヘッダを追加します。 Laravelはこのヘッダーをチェックして、何をするかを決定します(isAjaxまたはwantsJsonメソッドを使用)。

郵便配達員は自動的にこのヘッダーを送信しません。だから、あなたは手動で以下のヘッダーの1つを追加する必要があります。ここでは

Accept: application/json 

X-Requested-With: XMLHttpRequest 

は、一例として、郵便配達員のスクリーンショットです:

enter image description here

+0

コンテンツタイプapplication jsonのスクリーンショットを追加しました。更新された質問でそれを確認できますか? – Pankaj

+0

Frameworkの場所にjsonメッセージの書式設定を依頼できますか?私はそれをより詳細にメッセージを表示するように変更したいと思います。 – Pankaj

+0

私はスクリーンショットを追加しました。検証メッセージを編集するには、 'RoleRequest'ファイルに' public function messages() 'を追加します:https://laravel.com/docs/master/validation#customizing-the-error-messages –

関連する問題