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

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

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

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