2017-05-14 61 views
0

可以使用帶有json輸入的ParamConverter並刪除不需要的字段嗎?SF使用ParamConverter刪除不需要的json輸入

在我的實體文件夾中,我有字段名稱(字符串)和createdAt(日期時間)。我不希望發送新文件夾的用戶選擇createdAt的值。

JSON輸入:

{ 
    "name": "F name", 
    "createdAt": "01/02/03" 
} 

應該拯救實體只與名稱。

我該如何忽略createAt(或任何不需要的輸入)字段?

/** 
* @Rest\Post("/folder") 
* @Rest\View(StatusCode = 201) 
* @ParamConverter(
*  "folder", 
*  converter="fos_rest.request_body", 
*  options={ 
*  "validator"={ "groups"="Create" } 
*  } 
*) 
* 
*/ 
public function createAction(Folder $folder, ConstraintViolationList $violations) 
{ 
    if (count($violations)) { 
     return $this->view($violations, Response::HTTP_BAD_REQUEST); 
    } 

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

    return $folder; 
} 

回答

0

我做到了!我使用JmsSerializer組。

/** 
* @Rest\Post("/folder") 
* @Rest\View(StatusCode = 201) 
* @ParamConverter(
*  "folder", 
*  converter="fos_rest.request_body", 
*  options={ 
*  "validator"={ "groups"="create" }, 
*  "deserializationContext"={"groups"={"folder_create"}} 
*  } 
*) 
* 
*/ 
0

您可以使用請求來選擇您要使用的JSON對象中的哪些項目。

use Symfony\Component\HttpFoundation\Request; 

public function createAction(Folder $folder, ConstraintViolationList $violations, Request $request) 
{ 
    $name = $request->request->get('name'); 
    #do whatever you want with $name now ... 

    if (count($violations)) { 
     return $this->view($violations, Response::HTTP_BAD_REQUEST); 
    } 

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

    return $folder; 
} 
+0

我可以使用$ folder-> getName()。這不是重點;)我想在創建文件夾之前自動刪除json中的項目。 – Sancho