Esempio n. 1
0
use Propilex\Hateoas\VndErrorRepresentation;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Validator\Mapping\ClassMetadataFactory;
use Symfony\Component\Validator\Mapping\Loader\YamlFileLoader;
$app = new Silex\Application();
// Providers
$app->register(new Silex\Provider\ValidatorServiceProvider());
$app->register(new Silex\Provider\UrlGeneratorServiceProvider());
$app->register(new Propel\Silex\PropelServiceProvider(), array('propel.config_file' => __DIR__ . '/config/propel/propilex.php', 'propel.model_path' => __DIR__ . '/../src/Propilex/Model'));
// Configure the validator service
$app['validator.mapping.class_metadata_factory'] = new ClassMetadataFactory(new YamlFileLoader(__DIR__ . '/config/validation.yml'));
// Configure Hateoas serializer
$app['serializer'] = $app->share(function () use($app) {
    $jmsSerializerBuilder = JMS\Serializer\SerializerBuilder::create()->setMetadataDirs(array('' => __DIR__ . '/config/serializer', 'Propilex' => __DIR__ . '/config/serializer'))->setDebug($app['debug'])->setCacheDir(__DIR__ . '/cache/serializer');
    return Hateoas\HateoasBuilder::create($jmsSerializerBuilder)->setMetadataDirs(array('' => __DIR__ . '/config/serializer', 'Propilex' => __DIR__ . '/config/serializer'))->setDebug($app['debug'])->setCacheDir(__DIR__ . '/cache/hateoas')->setUrlGenerator(null, new SymfonyUrlGenerator($app['url_generator']))->setUrlGenerator('templated', new SymfonyUrlGenerator($app['templated_uri_generator']))->setXmlSerializer(new XmlHalSerializer())->addConfigurationExtension(new CuriesConfigurationExtension($app['curies_route_name'], 'templated'))->setExpressionContextVariable('curies_prefix', $app['curies_prefix'])->registerExpressionFunction(new TransExpressionFunction($app['translator']))->build();
});
$app['hateoas.pagerfanta_factory'] = $app->share(function () use($app) {
    return new PagerfantaFactory();
});
// Translation
$app->register(new Silex\Provider\TranslationServiceProvider());
$app->before(function (Request $request) use($app) {
    $validatorFile = __DIR__ . '/../vendor/symfony/validator/Symfony/Component/Validator/Resources/translations/validators.%s.xlf';
    $locale = $request->attributes->get('_language', 'en');
    $app['translator']->setLocale($locale);
    $app['translator']->addLoader('xlf', new Symfony\Component\Translation\Loader\XliffFileLoader());
    $app['translator']->addResource('xlf', sprintf($validatorFile, $locale), $locale, 'validators');
    $messagesLocale = $locale;
    if (!is_file($messagesFile = __DIR__ . '/config/messages.' . $messagesLocale . '.yml')) {
        $messagesFile = sprintf(__DIR__ . '/config/messages.%s.yml', $app['translation.fallback']);
<?php

use Api\Lib\VndErrors;
$app['serializer'] = $app->share(function () use($app) {
    return Hateoas\HateoasBuilder::create()->setDebug($app['debug'])->build();
});
$app['vnd.errors'] = $app->share(function () {
    return (new VndErrors())->build();
});