Commit Graph

304 Commits

Author SHA1 Message Date
Fabien Potencier
e7892071bb [FrameworkBundle] fixed wrong usage of obsolete session.class parameter 2011-04-23 11:43:35 +02:00
Fabien Potencier
3ed0ff7b03 [FrameworkBundle] removed two parameters 2011-04-23 11:34:17 +02:00
Fabien Potencier
9a4da005a2 Merge remote branch 'bschussek/form-extensions'
* bschussek/form-extensions:
  [Form] Refactored code from CoreExtension to new ValidatorExtension
  [Form] Added FormTypeExtensionInterface
  [Form] Reorganized code into "form extensions"
2011-04-23 09:11:25 +02:00
Pascal Borreli
b5769c52d6 Fixed various typo 2011-04-22 23:12:50 +00:00
Bernhard Schussek
1ce2db87e2 [Form] Added FormTypeExtensionInterface
With implementations of this interface, existing types can be amended.
The Csrf extension, for example, now contains a class FormTypeCsrfExtension
that adds CSRF capabilities to the "form" type.

To register new type extensions in the DIC, tag them with "form.type_extension"
and the name of the extended type as alias.
2011-04-22 19:24:38 +02:00
Bernhard Schussek
54e66c518f [Form] Reorganized code into "form extensions"
The extension classes are now the only constructor argument of the FormFactory class. They replace the existing "type loader" classes.

    new FormFactory(array(
        new CoreExtension($validator, $storage),
        new CsrfExtension($csrfProvider),
        new DoctrineOrmExtension($em),
    ));

Together with a few upcoming commits this mechanism will make

 * extension of the form framework in bundles and
 * usage of the forms outside of Symfony2

much easier.
2011-04-22 17:41:21 +02:00
Fabien Potencier
7644e86683 refactored session configuration
* made the options array only for "global" options that are valid for all session storages
 * changed the PDO session storage constructor signature to accept an array of options for DB configuration
 * changed the storage_id to be the full service id, instead of just part of it
 * removed the class parameter for session as it can be changed via the .class parameter (it was the only example in the framework)
 * removed the configuration for the PDO session storage for now
2011-04-22 13:34:57 +02:00
Eriksen Costa
7bbb8beb17 [FrameworkBundle] updated method call 2011-04-21 23:20:52 -03:00
Eriksen Costa
589b0ab4ed Merge branch 'master' into form-frameworkbundle-form-guessers-fix
Conflicts:
	src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/AddFormGuessersPass.php
	src/Symfony/Component/Form/MoneyField.php
2011-04-21 23:03:40 -03:00
Victor Berchet
1191e3aa66 [AsseticBundle] Fix the cache warmers 2011-04-20 17:37:21 +02:00
Fabien Potencier
1df8b2ee37 [FrameworkBundle] fixed methods that have been renamed in the previous commit 2011-04-20 14:31:42 +02:00
Fabien Potencier
9d2ea4ec31 Merge remote branch 'kriswallsmith/dic/method-renames'
* kriswallsmith/dic/method-renames:
  added method renames to UPDATE
  [DependencyInjection] renamed ContainerBuilder::remove() as removeDefinition() to be more consistent with other definition-related methods
  [DependencyInjection] renamed Definition::setArgument() as replaceArgument() to be more specific
2011-04-20 14:28:09 +02:00
Kris Wallsmith
cdf706d357 [DependencyInjection] renamed Definition::setArgument() as replaceArgument() to be more specific 2011-04-20 04:47:44 -07:00
Fabien Potencier
07aae98495 [Routing] added support for _scheme requirement
The _scheme requirement can be used to force routes to always match one given scheme
and to always be generated with the given scheme.

So, if _scheme is set to https, URL generation will force an absolute URL if the
current scheme is http. And if you request the URL with http, you will be redirected
to the https URL.
2011-04-20 10:49:32 +02:00
Bernhard Schussek
325049ac73 Revert "[Form] removed validation.xml file (not used anymore)"
This reverts commit 3e476e1c30.
2011-04-18 12:53:41 +02:00
Fabien Potencier
3e476e1c30 [Form] removed validation.xml file (not used anymore) 2011-04-17 22:33:31 +02:00
Fabien Potencier
0b563c32ac Merge remote branch 'schmittjoh/diLogging'
* schmittjoh/diLogging:
  [DependencyInjection] enable debug related passes only in debug environment
  [DependencyInjection] removed pass time
  [DependencyInjection] fixes a bug which might have occurred when using property injection under certain circumstances
  [DependencyInjection] fixed method name
  [FrameworkBundle] whitespace fix
  [DependencyInjection] refactored code a bit, added some more logging messages
  [DependencyInjection] dump a readable format
  [DependencyInjection] better logging
2011-04-15 10:38:54 +02:00
Fabien Potencier
067bd0009e Merge remote branch 'kriswallsmith/scalar-nodes'
* kriswallsmith/scalar-nodes:
  removed a lot of special normalization logic in the configuration by using xml values instead of attributes
2011-04-15 07:44:22 +02:00
Johannes M. Schmitt
ee05534815 [DependencyInjection] dump a readable format 2011-04-14 20:42:19 +02:00
Bernhard Schussek
44af72bbf4 Merge remote branch 'symfony/master' into experimental 2011-04-14 15:04:59 +02:00
Fabien Potencier
ea84bb025b fixed session management in functional tests 2011-04-13 23:11:25 +02:00
Bernhard Schussek
8031ad77c8 Merge remote branch 'fabpot/form' into fabpot_merge 2011-04-13 15:58:15 +02:00
Kris Wallsmith
672291087c removed a lot of special normalization logic in the configuration by using xml values instead of attributes 2011-04-13 05:59:46 -07:00
Bernhard Schussek
2a18be1c9f Merge remote branch 'symfony/master' into experimental 2011-04-13 13:53:20 +02:00
Fabien Potencier
0c93b6bbe4 Merge remote branch 'vicb/locate_template2'
* vicb/locate_template2:
  [FrameworkBundle] Enforce templates instances of TemplateReferenceInterface
  [FrameworkBundle] Add unit tests for the CacheTemplateLocator class
  [FrameworkBundle] Add unit tests for the TemplateLocator class
  [TwigBundle] Fix the cache warmer
  [TwigBundle] Tweak cache warmer configuration
  [FrameworkBundle] Fix resource inheritance in the template cache warmer
2011-04-13 13:38:11 +02:00
Johannes Schmitt
2397bcbe94 [DependencyInjection] better logging 2011-04-13 00:51:32 +02:00
Benjamin Eberlei
d27dc86c25 [FrameworkBundle][Validation] Fix bug where YAML Validation files are not detected. 2011-04-11 23:26:11 +02:00
Fabien Potencier
7f2294395c [Form] reverted the templating part to be similar to what we have today 2011-04-11 16:42:51 +02:00
Victor Berchet
7cc51d8596 [FrameworkBundle] Fix resource inheritance in the template cache warmer 2011-04-08 18:54:19 +02:00
Bernhard Schussek
67582c9a5c Merge remote branch 'symfony/master' into experimental
Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Debug/TraceableEventDispatcher.php
2011-04-06 16:06:26 +02:00
Kris Wallsmith
d0f45fd3b6 [FrameworkBundle] added configuration for caching validator metadata 2011-04-06 04:07:38 -07:00
Kris Wallsmith
eca0243d3e [FrameworkBundle] added condition so invalid session config isn't created 2011-04-05 15:42:43 -07:00
Victor Berchet
b640fcb0f0 [Config] Introduction of an ConfigurationInterface 2011-04-05 11:26:28 +02:00
Fabien Potencier
6daf09a61d Merge remote branch 'subsven/master'
* subsven/master:
  Add (Boolean) cast to constructor arguments
  Add a configuration option to restrict profiler storage to the master request
2011-04-05 10:03:58 +02:00
Fabien Potencier
747c98f178 [FrameworkBundle] removed the debug.file_link_format parameter 2011-04-05 08:03:29 +02:00
Victor Berchet
5a1d5e5082 [FrameworkBundle] Make specifying a custom file_link_format easier 2011-04-05 01:15:21 +02:00
Victor Berchet
9998ab18e9 [FrameworkBundle] Fix for getting the file link format fallback to XDebug configuration 2011-04-04 23:39:37 +02:00
Bernhard Schussek
0cf8cc762a Merge remote branch 'symfony/master' into experimental
Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/money_field.html.php
	src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/percent_field.html.php
2011-04-04 15:16:08 +02:00
Fabien Potencier
1cb03b1448 [FrameworkBundle] removed templating.loader.cache.path parameter 2011-04-04 11:56:41 +02:00
Bernhard Schussek
39b0aafc00 Merge remote branch 'symfony/master' into experimental
Conflicts:
	src/Symfony/Bundle/DoctrineBundle/Resources/config/orm.xml
2011-04-02 12:08:27 +02:00
Martin Hason
57b1b4992b [FrameworkBundle] fixed bugs
- not existing service in DI container
- called invalid method
2011-04-01 10:34:13 +02:00
Fabien Potencier
eb21f5b76e [FrameworkBundle] moved some validation related services to the XML services file 2011-04-01 08:26:19 +02:00
Fabien Potencier
33add37f7c [FrameworkBundle] removed the validator.annotations.namespaces parameter
The parameter has been removed and the service moved to the XML file (for consistency).
The behavior is still the same as before as any non-public service
which is not referenced anywhere will be automatically removed by a
compiler pass.
2011-04-01 08:15:38 +02:00
Bernhard Schussek
bbeddf7789 Merge remote branch 'symfony/master' into experimental 2011-03-31 12:32:20 +02:00
Fabien Potencier
c8fe15bfcf [FrameworkBundle] removed exception_listener.controller parameter 2011-03-30 19:21:04 +02:00
Fabien Potencier
68d340b845 [FrameworkBundle] removed translator.fallback_locale parameter 2011-03-30 19:16:13 +02:00
Fabien Potencier
40606edd1c [FrameworkBundle] removed templating.assets.version and templating.assets.base_urls parameters 2011-03-30 19:05:22 +02:00
Fabien Potencier
ce4a8de789 [FrameworkBundle] removed the session.default_locale parameter 2011-03-30 17:34:23 +02:00
Fabien Potencier
5e0c046abd [FrameworkBundle] removed %error_handle.level% parameter 2011-03-30 17:02:38 +02:00
Sven Paulus
601d3f5d95 Add a configuration option to restrict profiler storage to the master request
We a currently working on a project were a single requested URL typically
leads to some hundred controller calls. Using the dev controller got
incredibly slow since recent Symfony2 changes because for each controller
invocation a new entry gets added to the profiler storage (totalling over
100mb of data on each request in our case).

With the new configuration attribute "only-master-requests" it is possible
to limit the profiler storage to the master requests, keeping the profiler
usable for us.
2011-03-29 16:58:34 +02:00
Bernhard Schussek
a58cfab37d [Form] Removed form.type.loader tag and according compiler pass to simplify configuration. Custom types that are not in the DIC can be instantiated manually and passed wherever a type is desired. 2011-03-26 18:48:55 +01:00
Bernhard Schussek
fae319e77a [Form] Renderers are now created explicitely using FormFactory::createRenderer(). This improves performance on requests where a form does not need to be rendered 2011-03-26 16:03:34 +01:00
Bernhard Schussek
eb18676354 Merge branch 'master' into experimental 2011-03-25 09:24:38 +01:00
Bernhard Schussek
7b412cc762 [Form] Removed FormFactory::addGuessers() and moved guessers to constructor arg instead 2011-03-25 02:26:14 +01:00
Bernhard Schussek
9c4095a356 [FrameworkBundle] AddFormTypesPass now uses the service ID as alias if no alias is given 2011-03-25 02:18:21 +01:00
Kris Wallsmith
2f8d5cd1c0 [FrameworkBundle] fixed build of config for asset packages 2011-03-24 15:18:50 -07:00
Bernhard Schussek
1211d77f49 [Form] Introduced renderer theme factories so that themes can be changed during runtime 2011-03-24 14:27:21 +01:00
Bernhard Schussek
5b41810b6d Revert "[Form] Changed naming of Themes to ThemeEngines. Theme templates are now 'themes'"
This reverts commit 1efd680b68.
2011-03-24 10:55:12 +01:00
Bernhard Schussek
1efd680b68 [Form] Changed naming of Themes to ThemeEngines. Theme templates are now 'themes' 2011-03-23 22:34:58 +01:00
Bernhard Schussek
9839aafb7d Merge remote branch 'symfony/master' into experimental 2011-03-23 19:18:38 +01:00
Fabien Potencier
20245da86d [FrameworkBundle] fixed cache_warmer configuration 2011-03-22 22:56:46 +01:00
Bernhard Schussek
270a98e413 [Form] Added support for types that are not registered in the DIC. These are identified by their FQ class name. 2011-03-22 12:33:15 +01:00
Benjamin Eberlei
39c2d3f166 [Form] Add PhpTheme that relies on no Template Engine, generalize tests to use for PhpTheme and PhpEngineTheme. Fixed some bugs 2011-03-19 17:47:18 +01:00
Benjamin Eberlei
32e1a7c8f9 Merge bschussek/experimental into branch forms. 2011-03-19 15:18:52 +01:00
Bernhard Schussek
8742cafc21 [FrameworkBundle] Fixed DI configuration for field types 2011-03-19 14:00:27 +01:00
Bernhard Schussek
89215d167d Merge remote branch 'symfony/master' into experimental 2011-03-19 13:25:41 +01:00
Benjamin Eberlei
d44e2264ba Merge branch 'experimental' of git://github.com/bschussek/symfony into forms 2011-03-19 09:36:30 +01:00
Fabien Potencier
f97006f738 [FrameworkBundle] fixed IDE setting for exceptions 2011-03-18 15:47:44 +01:00
Fabien Potencier
0d052201fe [FrameworkBundle] fixed class load order 2011-03-18 12:07:42 +01:00
Fabien Potencier
3627eee3c6 Merge remote branch 'vicb/cfg_rebase'
* vicb/cfg_rebase:
  [Config] Ability to add and override node types without having to subclass NodeBuilder
  [DoctrineBundle] Fix some typos
  [SwiftMailerBundle] Fix a merge issue in the configuration
  Tweak PHPDocs in the extension configuration files
  [Config] Component refactoring
2011-03-18 11:41:43 +01:00
Bernhard Schussek
3f70f89339 Merge remote branch 'symfony/master' into experimental
Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Debug/TraceableEventDispatcher.php
	src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
	src/Symfony/Component/HttpFoundation/File/UploadedFile.php
2011-03-18 10:39:40 +01:00
Fabien Potencier
060f34fca9 [FrameworkBundle] fixed class loading order 2011-03-18 09:24:07 +01:00
Fabien Potencier
a71f63e61d [FrameworkBundle] fixed class loading order 2011-03-18 07:36:02 +01:00
Bernhard Schussek
52f382a859 Merge branch 'event-manager' into experimental 2011-03-18 01:55:37 +01:00
John Wards
7c0fe6a3df [FrameworkBundle] Fixed order of the classes to compile for EventDispatcher 2011-03-18 01:54:57 +01:00
Benjamin Eberlei
3bc825bbd4 Merge branch 'experimental' of git://github.com/bschussek/symfony into forms 2011-03-17 19:05:59 +01:00
Benjamin Eberlei
85b61fe1e2 First attempt of PhpTheme. 2011-03-17 19:05:48 +01:00
Victor Berchet
0e84757d94 Tweak PHPDocs in the extension configuration files 2011-03-17 16:29:03 +01:00
Victor Berchet
1e0ed22c55 [Config] Component refactoring
The Config component API have changed and the extension configuration files must be updated accordingly:

1. Array nodes must enclosed their children definition in ->children() ... ->end() calls:

Before:

    $treeBuilder->root('zend', 'array')
        ->arrayNode('logger')
            ->scalarNode('priority')->defaultValue('INFO')->end()
            ->booleanNode('log_errors')->defaultFalse()->end()
        ->end();

After:

    $treeBuilder->root('zend', 'array')
        ->children()
            ->arrayNode('logger')
                ->children()
                    ->scalarNode('priority')->defaultValue('INFO')->end()
                    ->booleanNode('log_errors')->defaultFalse()->end()
                ->end()
            ->end()
        ->end();

2. The 'builder' method (in NodeBuilder) has been dropped in favor of an 'append' method (in ArrayNodeDefinition)

Before:

    $treeBuilder->root('doctrine', 'array')
        ->arrayNode('dbal')
            ->builder($this->getDbalConnectionsNode())
        ->end();

After:

    $treeBuilder->root('doctrine', 'array')
        ->children()
            ->arrayNode('dbal')
                ->append($this->getDbalConnectionsNode())
            ->end()
        ->end();

3. The root of a TreeBuilder is now an NodeDefinition (and most probably an ArrayNodeDefinition):

Before:

    $root = $treeBuilder->root('doctrine', 'array');
    $this->addDbalSection($root);

    public function addDbalSection(NodeBuilder $node)
    {
        ...
    }

After:

    $root = $treeBuilder->root('doctrine', 'array');
    $this->addDbalSection($root);

    public function addDbalSection(ArrayNodeDefinition $node)
    {
        ...
    }

4. The NodeBuilder API has changed (this is seldom used):

Before:

    $node = new NodeBuilder('connections', 'array');

After:

The recommended way is to use a tree builder:

    $treeBuilder = new TreeBuilder();
    $node = $treeBuilder->root('connections', 'array');

An other way would be:

    $builder = new NodeBuilder();
    $node = $builder->node('connections', 'array');

Some notes:

- Tree root nodes should most always be array nodes, so this as been made the default:

    $treeBuilder->root('doctrine', 'array') is equivalent to $treeBuilder->root('doctrine')

- There could be more than one ->children() ... ->end() sections. This could help with the readability:

    $treeBuilder->root('doctrine')
        ->children()
            ->scalarNode('default_connection')->end()
        ->end()
        ->fixXmlConfig('type')
        ->children()
            ->arrayNode('types')
                ....
            ->end()
        ->end()
2011-03-17 16:26:15 +01:00
Fabien Potencier
1219b98ec5 renamed some methods in the event dispatcher 2011-03-17 15:27:42 +01:00
Bernhard Schussek
1c9a00733f Merge branch 'event-manager' into experimental
Conflicts:
	src/Symfony/Component/Security/Http/Firewall/AbstractAuthenticationListener.php
	src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php
2011-03-17 13:38:24 +01:00
Bernhard Schussek
5f14d8d6aa Merge remote branch 'symfony/master' into event-manager
Conflicts:
	src/Symfony/Bundle/AsseticBundle/CacheWarmer/AssetWriterCacheWarmer.php
	src/Symfony/Bundle/AsseticBundle/Tests/CacheWarmer/AssetWriterCacheWarmerTest.php
	src/Symfony/Bundle/FrameworkBundle/Profiler/ProfilerListener.php
	src/Symfony/Bundle/FrameworkBundle/Resources/config/profiling.xml
	src/Symfony/Component/HttpKernel/HttpKernel.php
	src/Symfony/Component/Security/Http/Firewall/AbstractAuthenticationListener.php
	src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php
2011-03-17 12:34:12 +01:00
Bernhard Schussek
de5748070d [FrameworkBundle] Removed EventSubscriber support for DI tags because it currently cannot be implemented 2011-03-17 12:22:49 +01:00
Fabien Potencier
005287ac88 Merge remote branch 'kriswallsmith/templating/asset-packages' 2011-03-16 16:18:45 +01:00
Bernhard Schussek
f64f55002b Merge remote branch 'symfony/master' into experimental
Conflicts:
	src/Symfony/Component/Security/Http/Firewall/AbstractAuthenticationListener.php
	src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php
2011-03-16 16:00:54 +01:00
Fabien Potencier
28d9b331bd [FrameworkBundle] made the profiler easily configurable 2011-03-16 15:58:56 +01:00
Martin Hason
cef70893df [HttpKernel], [FrameworkBundle] added method getContainerClass and parameter kernel.container_class 2011-03-15 09:16:02 +01:00
Fabien Potencier
f4e4a2aa1b refactored ConfigCache and optimized container:debug task 2011-03-14 18:37:25 +01:00
Bernhard Schussek
0bf566310c Merge branch 'event-manager' into experimental
Conflicts:
	src/Symfony/Component/Form/BirthdayField.php
	src/Symfony/Component/Form/CheckboxField.php
	src/Symfony/Component/Form/ChoiceField.php
	src/Symfony/Component/Form/ChoiceList/TimeZoneChoiceList.php
	src/Symfony/Component/Form/CollectionField.php
	src/Symfony/Component/Form/DateField.php
	src/Symfony/Component/Form/DateTimeField.php
	src/Symfony/Component/Form/EntityChoiceField.php
	src/Symfony/Component/Form/Events.php
	src/Symfony/Component/Form/FieldFactory/FieldFactory.php
	src/Symfony/Component/Form/FieldFactory/FieldFactoryInterface.php
	src/Symfony/Component/Form/FileField.php
	src/Symfony/Component/Form/Filters.php
	src/Symfony/Component/Form/FormContext.php
	src/Symfony/Component/Form/FormContextInterface.php
	src/Symfony/Component/Form/FormFactoryInterface.php
	src/Symfony/Component/Form/HybridField.php
	src/Symfony/Component/Form/IntegerField.php
	src/Symfony/Component/Form/LanguageField.php
	src/Symfony/Component/Form/LocaleField.php
	src/Symfony/Component/Form/MoneyField.php
	src/Symfony/Component/Form/NumberField.php
	src/Symfony/Component/Form/PasswordField.php
	src/Symfony/Component/Form/PercentField.php
	src/Symfony/Component/Form/RepeatedField.php
	src/Symfony/Component/Form/TextField.php
	src/Symfony/Component/Form/TimeField.php
	src/Symfony/Component/Form/ToggleField.php
	src/Symfony/Component/Form/UrlField.php
	src/Symfony/Component/HttpFoundation/File/UploadedFile.php
	tests/Symfony/Tests/Component/Form/FileFieldTest.php
	tests/Symfony/Tests/Component/Form/FormContextTest.php
	tests/Symfony/Tests/Component/Form/HiddenFieldTest.php
2011-03-13 21:04:24 +01:00
Bernhard Schussek
06c682b4fb Switched from Doctrine's EventManager implementation to the EventManager clone in Symfony2 (now called EventDispatcher again) 2011-03-13 19:49:10 +01:00
Bernhard Schussek
25931caeab Merge remote branch 'symfony/master' into event-manager
Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Debug/TraceableEventManager.php
	src/Symfony/Bundle/WebProfilerBundle/WebDebugToolbarListener.php
	src/Symfony/Component/Security/Http/Firewall.php
	src/Symfony/Component/Security/Http/Firewall/AbstractAuthenticationListener.php
	src/Symfony/Component/Security/Http/Firewall/AbstractPreAuthenticatedListener.php
	src/Symfony/Component/Security/Http/Firewall/AccessListener.php
	src/Symfony/Component/Security/Http/Firewall/AnonymousAuthenticationListener.php
	src/Symfony/Component/Security/Http/Firewall/BasicAuthenticationListener.php
	src/Symfony/Component/Security/Http/Firewall/ChannelListener.php
	src/Symfony/Component/Security/Http/Firewall/ContextListener.php
	src/Symfony/Component/Security/Http/Firewall/DigestAuthenticationListener.php
	src/Symfony/Component/Security/Http/Firewall/ExceptionListener.php
	src/Symfony/Component/Security/Http/Firewall/ListenerInterface.php
	src/Symfony/Component/Security/Http/Firewall/LogoutListener.php
	src/Symfony/Component/Security/Http/Firewall/RememberMeListener.php
	src/Symfony/Component/Security/Http/Firewall/SwitchUserListener.php
	tests/Symfony/Tests/Component/Security/Http/Firewall/RememberMeListenerTest.php
2011-03-13 19:15:25 +01:00
Ryan Weaver
a495fa3dce [FrameworkBundle] Adding a container:debug console
This command uses a new container pass which dumps the ContainerBuilder into a cache file by serializing it. It's possible that we don't want this to run when kernel.debug = false, but I don't see the harm of generating the file and running the container:debug in, for example, the prod environment seems to make sense.
2011-03-12 14:44:21 -06:00
Kris Wallsmith
6904e0e1e2 [FrameworkBundle] implemented asset packages 2011-03-08 09:22:25 -08:00
Fabien Potencier
5c82db1d60 Merge remote branch 'stof/assets_url_fix'
* stof/assets_url_fix:
  [FrameworkBundle] fixed tests to conform to new xsd
  Fixed assets_base_urls configuration
2011-03-08 15:38:43 +01:00
Ryan Weaver
69ad4e4f77 [FrameworkBundle] Adding an exception to help with bad configuration and filling in some missing tests 2011-03-07 21:10:01 -06:00
Bernhard Schussek
2cf3779a2c Renamed EventArgs classes and adapted remaining code to EventManager
The only missing part is ContainerAwareEventManager::addEventSubscriberService(),
because I'm not sure how to find out the class name of a service in the DIC.

Also, inline documentation of this code needs to be finished once it is accepted.
2011-03-07 19:16:05 +01:00
Bernhard Schussek
a54d3e6fb0 Merge remote branch 'symfony/master' into event-manager 2011-03-07 19:15:57 +01:00
Fabien Potencier
8c423edfef replaced symfony-project.org by symfony.com 2011-03-06 12:40:06 +01:00
Bernhard Schussek
f1393d7b1f Replaced EventDispatcher by Doctrine's EventManager implementation
Doctrine's EventManager implementation has several advantages over the
EventDispatcher implementation of Symfony2. Therefore I suggest that we
use their implementation.

Advantages:

 * Event Listeners are objects, not callbacks. These objects have handler
   methods that have the same name as the event. This helps a lot when
   reading the code and makes the code for adding an event listener shorter.
 * You can create Event Subscribers, which are event listeners with an
   additional getSubscribedEvents() method. The benefit here is that the
   code that registers the subscriber doesn't need to know about its
   implementation.
 * All events are defined in static Events classes, so users of IDEs benefit
   of code completion
 * The communication between the dispatching class of an event and all
   listeners is done through a subclass of EventArgs. This subclass can be
   tailored to the type of event. A constructor, setters and getters can be
   implemented that verify the validity of the data set into the object.
   See examples below.
 * Because each event type corresponds to an EventArgs implementation,
   developers of event listeners can look up the available EventArgs methods
   and benefit of code completion.
 * EventArgs::stopPropagation() is more flexible and (IMO) clearer to use
   than notifyUntil(). Also, it is a concept that is also used in other
   event implementations

Before:

    class EventListener
    {
        public function handle(EventInterface $event, $data) { ... }
    }

    $dispatcher->connect('core.request', array($listener, 'handle'));
    $dispatcher->notify('core.request', new Event(...));

After (with listeners):

    final class Events
    {
        const onCoreRequest = 'onCoreRequest';
    }

    class EventListener
    {
        public function onCoreRequest(RequestEventArgs $eventArgs) { ... }
    }

    $evm->addEventListener(Events::onCoreRequest, $listener);
    $evm->dispatchEvent(Events::onCoreRequest, new RequestEventArgs(...));

After (with subscribers):

    class EventSubscriber
    {
        public function onCoreRequest(RequestEventArgs $eventArgs) { ... }

        public function getSubscribedEvents()
        {
            return Events::onCoreRequest;
        }
    }

    $evm->addEventSubscriber($subscriber);
    $evm->dispatchEvent(Events::onCoreRequest, new RequestEventArgs(...));
2011-03-05 15:30:34 +01:00
Christophe Coevoet
db168cc40d Fixed assets_base_urls configuration 2011-03-02 20:04:12 +01:00