Skip to content

Instantly share code, notes, and snippets.

@hto
Last active January 18, 2018 12:23
Show Gist options
  • Save hto/6026535b3ae0a8483866a59737c74530 to your computer and use it in GitHub Desktop.
Save hto/6026535b3ae0a8483866a59737c74530 to your computer and use it in GitHub Desktop.
JmsSerializer
<?php
/**
*
*/
public function saveAction(Request $request)
{
$serializer = $this->get('jms_serializer');
$content = json_decode($request->getContent(), true);
/** @var BlogService $blogService */
$blogService = $this->get('blog.service');
// NOT
// Gelen json içinde içi dolu bir "id" var ise varolan kayıt üzerinde işlem yaptı varsayarak kayıtlı obje ile birleştirir. // SQL UPDATE işlemi yapar
// Diğer durumda ise gelen veriyi ilgili field'lara göre set ederek // SQL INSERT işlemi yapar
if (isset($content['id']) && intval($content['id']) > 0){
$object = $blogService->findOneBy(array('id' => $content['id']));
$context = new \JMS\Serializer\DeserializationContext();
$context->attributes->set('target', $object);
$contentEncode = json_encode($content);
$data = $serializer->deserialize($contentEncode, Blog::class, 'json', $context);
} else {
$contentEncode = json_encode($content);
$data = $serializer->deserialize($contentEncode, Blog::class, 'json');
}
// $data; artık bir Entity Objesidir.
// Örnekteki "Blog" entity'sine ait tüm methodları kullanabilir, BlogService içinde işlemler yapabilir.
// Örn: $data->getTitle();
// Örn: $data->getContent();
$blogService->save($data);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment