Skip to content

Commit

Permalink
serializer をサポート
Browse files Browse the repository at this point in the history
  • Loading branch information
T.Takabayashi committed Jul 21, 2016
1 parent 93b951f commit 7149807
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 4 deletions.
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
"symfony/var-dumper": "^3.1",
"knplabs/console-service-provider": "^2.0",
"doctrine/migrations": "^1.4",
"symfony/doctrine-bridge": "^3.1"
"symfony/doctrine-bridge": "^3.1",
"symfony/serializer": "^3.1"
},
"require-dev": {
"sorien/silex-pimple-dumper": "~2.0"
Expand Down
76 changes: 74 additions & 2 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 13 additions & 0 deletions src/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
namespace Xearts\SilexBase;

use Dflydev\Provider\DoctrineOrm\DoctrineOrmServiceProvider;
use Doctrine\Common\Annotations\AnnotationReader;
use Knp\Provider\ConsoleServiceProvider;
use Silex\Application as BaseApplication;
use Silex\Application\FormTrait;
Expand All @@ -16,6 +17,7 @@
use Silex\Provider\FormServiceProvider;
use Silex\Provider\LocaleServiceProvider;
use Silex\Provider\MonologServiceProvider;
use Silex\Provider\SerializerServiceProvider;
use Silex\Provider\ServiceControllerServiceProvider;
use Silex\Provider\SessionServiceProvider;
use Silex\Provider\SwiftmailerServiceProvider;
Expand All @@ -25,6 +27,9 @@
use Silex\Provider\VarDumperServiceProvider;
use Symfony\Bridge\Doctrine\Form\DoctrineOrmExtension;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Serializer\Mapping\Factory\ClassMetadataFactory;
use Symfony\Component\Serializer\Mapping\Loader\AnnotationLoader;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Translation\Loader\YamlFileLoader;
use Symfony\Component\Yaml\Yaml;
use Xearts\SilexBase\Doctrine\DoctrineBridgeManagerRegistry;
Expand Down Expand Up @@ -246,6 +251,14 @@ protected function initConsole()

protected function initOther()
{
$this->register(new SerializerServiceProvider());
$this['serializer.normalizers'] = $this->extend('serializer.normalizers', function ($normalizers, $app) {

$classMetadataFactory = new ClassMetadataFactory(new AnnotationLoader(new AnnotationReader()));

array_unshift($normalizers, new ObjectNormalizer($classMetadataFactory));
return $normalizers;
});
$this->register(new VarDumperServiceProvider());
}

Expand Down
2 changes: 2 additions & 0 deletions src/Entity/Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping\Id;
use Doctrine\ORM\Mapping\Table;
use Symfony\Component\Serializer\Annotation\Groups;


/**
Expand Down Expand Up @@ -40,6 +41,7 @@ public function getId()
}

/**
* @Groups({"hoge"})
* @return string
*/
public function getName()
Expand Down
8 changes: 7 additions & 1 deletion web/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,13 @@

$app->get('/', function () use ($app) {

var_dump($app['orm.em']->getRepository(\Xearts\SilexBase\Entity\Test::class)->findAll());
$tests = $app['orm.em']->getRepository(\Xearts\SilexBase\Entity\Test::class)->findAll();


/** @var Symfony\Component\Serializer\Serializer $serializer */
$serializer = $app['serializer'];

var_dump($serializer->normalize($tests, 'json', array('groups' => array('test', 'hoge'))));

return $app->render('index.html.twig');
});
Expand Down

0 comments on commit 7149807

Please sign in to comment.