Symfony - как использовать Normalizer

Чтобы сериализовать или десериализовать объект в JSON или XML, в симфони (начиная с версии 2.3) уже встроен JMSSerializerBundle, однако, изначально включен только Serializer, но не включен Normalizer. Таким образом из JSON или XML создать объект можно, а превратить объект в JSON или XML нельзя, так давайте разберемся как включить эту возможность.

Для включения нормализации, всего лишь нужно в файл app/config/config.yml добавить:

services:
   get_set_method_normalizer:
      class: Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
      tags:
         - { name: serializer.normalizer }

все, теперь можете делать так:

<?php
namespace Intranet\OrgunitBundle\Controller;

use Intranet\OrgunitBundle\Entity\Orgunit;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller
{
    /**
     * Поиск сущности (по указанным полям)
     */
    public function searchAction()
    {
        $array = $this->get('request')->query->all();

        $entity = $this->getDoctrine()
            ->getRepository('IntranetOrgunitBundle:Orgunit')
            ->findOneBy($array);

        /** @var \DateTime $DateTime */

        $DateTime = $entity->getDateStart();
        $entity->setDateStart( $DateTime->format('d.m.Y') );

        $serializer = $this->get('serializer');
        $array = $serializer->normalize($entity);
        //$json = $serializer->serialize($entity, 'json');

        return new JsonResponse( $array );
    }
}

Удачи, господа.

p.s. Форматнуть xml в array можно так:

$array = json_decode(json_encode((array) simplexml_load_string($xml)), true);

детально разобрать xml можно так, а вот форматнуть array в xml удобнее всего либой Array2XML

Оцени публикацию:
  • 2,10
Оценили человек: 2
Теги : Symfony

Похожие статьи:

Справочники и учебники:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2017 YaPro.Ru

Главная » Веб-мастеру » PHP »