SF 使用 ParamConverter 删除不需要的 json 输入
SF remove unwanted json input with ParamConverter
是否可以将 ParamConverter 与 json 输入一起使用并删除不需要的字段?
在我的实体文件夹中,我有字段名称(字符串)和创建时间(日期时间)。我不希望发送新文件夹的用户选择 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;
}
您可以使用 Request 从 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;
}
我做到了!
我使用 JmsSerializer 组。
/**
* @Rest\Post("/folder")
* @Rest\View(StatusCode = 201)
* @ParamConverter(
* "folder",
* converter="fos_rest.request_body",
* options={
* "validator"={ "groups"="create" },
* "deserializationContext"={"groups"={"folder_create"}}
* }
* )
*
*/
是否可以将 ParamConverter 与 json 输入一起使用并删除不需要的字段?
在我的实体文件夹中,我有字段名称(字符串)和创建时间(日期时间)。我不希望发送新文件夹的用户选择 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;
}
您可以使用 Request 从 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;
}
我做到了!
我使用 JmsSerializer 组。
/**
* @Rest\Post("/folder")
* @Rest\View(StatusCode = 201)
* @ParamConverter(
* "folder",
* converter="fos_rest.request_body",
* options={
* "validator"={ "groups"="create" },
* "deserializationContext"={"groups"={"folder_create"}}
* }
* )
*
*/