Вход Регистрация
Файл: onlinepoisk.wm-scripts.ru/vendor/silex/silex/silex/src/Silex/Provider/FormServiceProvider.php
Строк: 164
<?php

/*
 * This file is part of the Silex framework.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SilexProvider;

use 
SilexApplication;
use 
SilexServiceProviderInterface;
use 
SymfonyComponentFormExtensionCsrfCsrfExtension;
use 
SymfonyComponentFormExtensionCsrfCsrfProviderDefaultCsrfProvider;
use 
SymfonyComponentFormExtensionCsrfCsrfProviderSessionCsrfProvider;
use 
SymfonyComponentFormExtensionHttpFoundationHttpFoundationExtension;
use 
SymfonyComponentFormExtensionValidatorValidatorExtension as FormValidatorExtension;
use 
SymfonyComponentFormFormTypeGuesserChain;
use 
SymfonyComponentFormForms;

/**
 * Symfony Form component Provider.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
class FormServiceProvider implements ServiceProviderInterface
{
    public function 
register(Application $app)
    {
        if (!
class_exists('Locale') && !class_exists('SymfonyComponentLocaleStubStubLocale')) {
            throw new 
RuntimeException('You must either install the PHP intl extension or the Symfony Locale Component to use the Form extension.');
        }

        if (!
class_exists('Locale')) {
            
$r = new ReflectionClass('SymfonyComponentLocaleStubStubLocale');
            
$path dirname(dirname($r->getFilename())).'/Resources/stubs';

            require_once 
$path.'/functions.php';
            require_once 
$path.'/Collator.php';
            require_once 
$path.'/IntlDateFormatter.php';
            require_once 
$path.'/Locale.php';
            require_once 
$path.'/NumberFormatter.php';
        }

        
$app['form.secret'] = md5(__DIR__);

        
$app['form.type.extensions'] = $app->share(function ($app) {
            return array();
        });

        
$app['form.type.guessers'] = $app->share(function ($app) {
            return array();
        });

        
$app['form.extensions'] = $app->share(function ($app) {
            
$extensions = array(
                new 
CsrfExtension($app['form.csrf_provider']),
                new 
HttpFoundationExtension(),
            );

            if (isset(
$app['validator'])) {
                
$extensions[] = new FormValidatorExtension($app['validator']);

                if (isset(
$app['translator'])) {
                    
$r = new ReflectionClass('SymfonyComponentFormForm');
                    
$app['translator']->addResource('xliff'dirname($r->getFilename()).'/Resources/translations/validators.'.$app['locale'].'.xlf'$app['locale'], 'validators');
                }
            }

            return 
$extensions;
        });

        
$app['form.factory'] = $app->share(function ($app) {
            return 
Forms::createFormFactoryBuilder()
                ->
addExtensions($app['form.extensions'])
                ->
addTypeExtensions($app['form.type.extensions'])
                ->
addTypeGuessers($app['form.type.guessers'])
                ->
getFormFactory()
            ;
        });

        
$app['form.csrf_provider'] = $app->share(function ($app) {
            if (isset(
$app['session'])) {
                return new 
SessionCsrfProvider($app['session'], $app['form.secret']);
            }

            return new 
DefaultCsrfProvider($app['form.secret']);
        });
    }

    public function 
boot(Application $app)
    {
    }
}
Онлайн: 2
Реклама