2017-06-19 23 views
0

私はページ(webixデータテーブル)で使用するデータテーブルについて、REST APIを使用する必要があります。 GETメソッドでphp/symfony:POST/PUT apiのURLの属性を取得する

save: "rest->{{ path('api_i_post') }}", 
url: "rest->{{ path('erp_interventionapi_get', { trialid: trial.id }) 

、私は裁判(/裁判/ 1のために取得:以下、私が使用するAPI呼び出しを行うために、このページではhttp://localhost:8000/trial/1

私のurlは、たとえばあります)、データベースからロードされ、データテーブルに埋め込まれた多くの介入。

このデータテーブルを使用すると、「新しい行を追加する」ことができます。

新しい行を追加すると、自動的にフィールドtrial_idを入力できるようにしたいと思います(POSTメソッドを使用しています(「rest-> {{path( 'api_i_post')}}」) (/ trial/1、trial_id = 1の)データテーブルに新しい行を追加する場所によって異なりますが、POSTおよびPUTでこの属性(または試行オブジェクトID)を取得する方法はわかりません。

マイpostActionは:

/** 
* @Rest\Post("/api_i/", name="api_i_post") 
*/ 
public function postAction(Request $request) 
{ 
    $data = new Intervention; 
    $id = $request->get('id'); 
    $action = $request->get('action'); 
    $daadala = $request->get('daadala'); 
    $date = $request->get('date'); 
    $week = $request->get('week'); 
    $infopm = $request->get('info_pm'); 
    $comment = $request->get('comment'); 
    $location = $request->get('location'); 
    $trial = $request->get('trialid'); 

    $data->setAction($action); 
    $data->setDaadala($daadala); 
    $data->setDate($date); 
    $data->setWeek($week); 
    $data->setWho($infopm); 
    $data->setInfoPm($comment); 
    $data->setComment($location); 
    $data->setTrial($trial); 

    $em = $this->getDoctrine()->getManager(); 
    $em->persist($data); 
    $em->flush(); 

    $lastid = $data->getId(); 

    $response=array("id" => $id, "status" => "success", "newid" => $lastid); 
    return new JsonResponse($response); 

    $view = View::create(array("newid" => $lastid, "id" => $id, "status" => "success")); 
    return $this->handleView($view); 

} 

そして、私のputAction

/** 
* @Rest\Put("/api_i/{id}") 
*/ 
public function putAction(Request $request) 
{ 
    $data = new Intervention; 
    $id = $request->get('id'); 
    $action = $request->get('action'); 
    $daadala = $request->get('daadala'); 
    $date = $request->get('date'); 
    $week = $request->get('week'); 
    $infopm = $request->get('info_pm'); 
    $comment = $request->get('comment'); 
    $location = $request->get('location'); 
    $sn = $this->getDoctrine()->getManager(); 
    $intervention = $this->getDoctrine()->getRepository('ErpBundle:Sponsor')->find($id); 

    if (empty($intervention)) { 
     return new View("Sponsor not found", Response::HTTP_NOT_FOUND); 
    } 
    $intervention->setAction($action); 
    $intervention->setDaadala($daadala); 
    $intervention->setDate($date); 
    $intervention->setWeek($week); 
    $intervention->setWho($infopm); 
    $intervention->setInfoPm($comment); 
    $intervention->setComment($location); 
    $sn->flush(); 

    $response=array("id" => $id, "status" => "success"); 

    return new JsonResponse($response); 
} 

は、あなたがこの問題で私を助けることができますか?

割引:: - > {{パス「残り私は、この私の小枝テンプレートの更新を持って

はあなたにreplys後の私のコードの非常に

更新をありがとう( 'api_i_post'、{trialid:trial。ID})}}」、私はAJAXリクエストのプロファイラで見れば

が、私はそれを見るにはここにある:

キー値

TRIALID "1"

私は依然として私の投稿依頼でそれを取得する方法を理解していません(trial_idはまだnullです)

lowing:

/** 
* @Rest\Post("/api_i/", name="api_i_post") 
* @Rest\RequestParam(name="trialid") 
* 
* @param ParamFetcher $paramFetcher 
* @param Request $request 
*/ 
public function postAction(Request $request, ParamFetcher $paramFetcher) 
{ 
    $data = new Intervention; 
    $id = $request->get('id'); 
    $action = $request->get('action'); 
    $daadala = $request->get('daadala'); 
    $date = $request->get('date'); 
    $week = $request->get('week'); 
    $infopm = $request->get('info_pm'); 
    $comment = $request->get('comment'); 
    $location = $request->get('location'); 
    $trial = $paramFetcher->get('trialid'); 

    $data->setAction($action); 
    $data->setDaadala($daadala); 
    $data->setDate($date); 
    $data->setWeek($week); 
    $data->setWho($infopm); 
    $data->setInfoPm($comment); 
    $data->setComment($location); 
    $data->setTrial($trial); 

    $em = $this->getDoctrine()->getManager(); 
    $em->persist($data); 
    $em->flush(); 

    $lastid = $data->getId(); 

    $response=array("id" => $id, "status" => "success", "newid" => $lastid); 
    return new JsonResponse($response); 

    $view = View::create(array("newid" => $lastid, "id" => $id, "status" => "success")); 
    return $this->handleView($view); 

} 

答えて

0

あなたのポストアクション内でこれを実行する必要があるポストの値を取得するには:次に

public function postAction(Request $request) 
{ 
    $postData = $request->request->all(); 

次のような値の配列を持っている:PUTのために

$id = $postData['id']; 

をおこれが必要です:

public function putAction(int $id, Request $request) 
{ 
    $putData = json_decode($request->getContent(), true); 

このような値treieve:私はあなたがFosRestBundleを使用していると思います

$id = $putData['id']; 
+0

お返事ありがとう!私はこの方法で取得したIDはデータベースの介入のIDだと思います。私は、データベースの試行(データベースの介入で関係する試行ID)のIDを取得しようとしています。試用版IDはURLのID(またはこのページの試用版)です。これは私の投稿要求に追加するのに苦労しているものです。どんな手掛かり? – jonibegoode

+0

例えばputの内部に自動的にurlで取られた宣言パラメータ$ idの中に@jonibegoodeを追加しました –

0

を、もしそうなら、あなたはURLパラメータ取得するために注釈を使用することができます:あなたはあなたのためのadditionnalパラメータを許可したい場合は

/** 
* @Rest\Put("/api_i/{id}", requirements={"id" = "\d+"}) 
*/ 
public function putAction($id) 
{ 
    // you now have access to $id 
    ... 
} 

をルートが、URIに、あなたは注釈でRequestParamを使用することができません。

/** 
* @Rest\Put("/my-route/{id}", requirements={"id" = "\d+"}) 
* 
* @Rest\RequestParam(name="param1") 
* @Rest\RequestParam(name="param2") 
* 
* @param ParamFetcher $paramFetcher 
* @param int $id 
*/ 
public function putAction(ParamFetcher $paramFetcher, $id) 
{ 
    $param1 = $paramFetcher->get('param1'); 
    .... 
} 

はあなたが行うことができ、すべてを見ることがfosRestBundleのマニュアルを確認してください(たとえば、それを強制的にするかどうかなど)を入力してください。

+0

返事ありがとう!私はこれが私の必要なものかどうかはわかりません。ルート上のIDは、テーブルの介入のIDです。私はtrial_id(これはページの試用版のURLのIDです/ 1)を取得しようとしています.ParamFetcherについて私は知らなかったが、これを指摘してくれてありがとうございます。元のメッセージで自分のコードを更新しましたが、それでもtrial_idは取得できません – jonibegoode

関連する問題