2017-04-21 12 views
0

私はアプリのiOSのリードで、開発者が利用できない間にいくつかのAPIバグを修正しようとしています。私はLaravelには全く新しいので、リクエストメソッドが何であるかを確認しようとしています。私は別の質問からいくつかのガイダンスに従ってきたが、それは作業を取得することができませんでした:Laravel - 要求の確認方法

public function defaults(Request $request, User $user){ 
    $follow_ids = explode(',', env('FOLLOW_DEFAULTS')); 

    if ($request->isMethod('post')) { 
     return ['user' => $user]; 
    } 

    $user->follows()->syncWithoutDetaching($follow_ids); 

    return ['user.follows' => $user->follows->toArray()]; 
} 

あなたは私がここで間違っているかもしれないどこか知っていますか?前もって感謝します。要求が返されると

それは常にちょうどスキップし['user.follows' => $user->follows->toArray()]

答えて

3

$request:あなたはこのようなメソッド名をエコー可能性があります。このクラスはsymfonyのリクエスト(Symfony\Component\HttpFoundation\Request)を拡張します。実際にはisMethod()メソッドが定義されています。投稿として

基本的には、関数定義を考えると、それは「これはPOST要求である場合には、単にこれはPOST要求(例えばGET)でない場合、更新をユーザ・データを返し、関係データを返す。」読み出し

したがって、POSTリクエストを送信すると、['user' => $user]という応答が返されます。他のリクエスト方法(例:GET)を送信する場合は、followsの関係を変更し、['user.follows' => $user->follows->toArray()]の応答を取得します。

私には、これは逆のようです。 POSTリクエストでデータを更新し、その他のリクエスト(例:GET)でデータを返すようにしたいと考えています。

これが正しければ、あなたはisMethodチェック否定する必要があります。

if (! $request->isMethod('post')) { 
    return ['user' => $user]; 
} 

より適切にあなたがPOSTGET対要求を処理するために、別のコントローラのアクションを定義する必要がありますが、それはこの質問の範囲外であるとし、おそらくあなたが一時的なメンテナーになりたいと思っている以上のものです。

+0

非常に包括的な回答をいただきありがとうございます。私が言ったように、私はlaravelとの完全な初心者であり、私は間違った機能(oops)を見ていました。あなたの助けをありがとう! –

+1

@JackChamberlainまったく問題ありません。お力になれて、嬉しいです。 Laravelには多くの「魔法」がありますので、フレームワークで少し時間を費やさない限り、何が起こっているのか把握するのが難しいことがあります。既存のアプリケーションをデバッグしようとする新規参入者は複雑になる可能性があります。 :) – patricus

1

を返すように見えるifチェックが真なることはありませんので、リクエストがPOSTではないようです。 Illuminate\Http\Requestのインスタンスである必要があり

$method = $request->method(); 

echo $method; 

// or var_dump($method); 
関連する問題