Commit Graph

140 Commits

Author SHA1 Message Date
Jonathan H. Wage
34859999b2 Revert "[DoctrineMongoDBBundle] updated tests to reflect extension changes"
This reverts commit 8c3923e5f59fda3221776c6fc747ca9bd603f9af.
2011-02-16 23:01:37 +01:00
Jonathan H. Wage
20cf9f8a1a Revert "[DoctrineMongoDBBundle] updated DocumentManager definition to reflect latest ODM changes"
This reverts commit 6555013ac4c39e4a39b8d595c834eadc21e4a684.
2011-02-16 23:01:36 +01:00
Fabien Potencier
a29a413c48 made DIC extensions members of the Container instead of static members 2011-02-15 22:22:32 +01:00
Fabien Potencier
62e3053769 refactored previous commit, fixed tests
How to upgrade?

For XML configuration files:

 * All extensions should now use the config tag (this is just a convention as
   the YAML configurations files do not use it anymore):

 * The previous change means that the doctrine and security bundles now are
   wrapped under a main "config" tag:

        <doctrine:config>
            <doctrine:orm />
            <doctrine:dbal />
        </doctrine:config>

        <security:config>
            <security:acl />
            ...
        </security:config>

For YAML configuration files:

 * The main keys have been renamed as follows:

        * assetic:config -> assetic
        * app:config -> framework
        * webprofiler:config -> web_profiler
        * doctrine_odm.mongodb -> doctrine_mongo_db
        * doctrine:orm -> doctrine: { orm: ... }
        * doctrine:dbal -> doctrine: { dbal: ... }
        * security:config -> security
        * security:acl -> security: { acl: ... }
        * twig.config -> twig
        * zend.config -> zend
2011-02-15 22:22:28 +01:00
Fabien Potencier
14aa95ba21 added the concept of a main DIC extension for bundles
This allows for better conventions and better error messages if you
use the wrong configuration alias in a config file.

This is also the first step for a bigger refactoring of how the configuration
works (see next commits).

 * Bundle::registerExtensions() method has been renamed to Bundle::build()

 * The "main" DIC extension must be renamed to the new convention to be
   automatically registered:

      SensioBlogBundle -> DependencyInjection\SensioBlogExtension

 * The main DIC extension alias must follow the convention:

      sensio_blog for SensioBlogBundle

 * If you have more than one extension for a bundle (which should really
   never be the case), they must be registered manually by overriding the
   build() method

 * If you use YAML or PHP for your configuration, renamed the following
   configuration entry points in your configs:

      app -> framework
      webprofiler -> web_profiler
      doctrine_odm -> doctrine_mongo_db
2011-02-15 22:11:07 +01:00
Bulat Shakirzyanov
31b923ff55 [DoctrineMongoDBBundle] updated tests to reflect extension changes 2011-02-14 20:44:54 +01:00
Bulat Shakirzyanov
3623753c27 [DoctrineMongoDBBundle] updated DocumentManager definition to reflect latest ODM changes 2011-02-14 20:44:54 +01:00
Fabien Potencier
5c905beb13 moved common configuration classes to a new Config component 2011-02-13 22:31:50 +01:00
Jonathan H. Wage
b716b707ba General work on DoctrineMongoDBBundle to bring it more up to speed with DoctrineBundle. Added missing console commands, proxy cache warmer and hydrator cache warmer. 2011-02-13 10:43:21 +01:00
Fabien Potencier
b91f082be5 Revert "moved Resource to the Config component"
This reverts commit f53080860a.

Revert "[Router] config fixes"

This reverts commit 51beecc6f2.

Revert "moved duplicated files to a new Config component"

This reverts commit a8ec9b27f0.
2011-02-10 16:14:12 +01:00
Fabien Potencier
f53080860a moved Resource to the Config component 2011-02-10 16:07:42 +01:00
Fabien Potencier
a8ec9b27f0 moved duplicated files to a new Config component 2011-02-10 03:43:36 +01:00
Fabien Potencier
e58a84eb09 added a FileLocator to DIC so that we can load resources like @BundleName/Resources/... 2011-02-10 00:44:02 +01:00
hhamon
d076ee4f3a [DoctrineMongoDBBundle] use namespace in MongoDB data fixtures command 2011-02-09 07:09:34 +01:00
Bulat Shakirzyanov
d447d22809 [DoctrineBundle, DoctrineAbstractBundle, DoctrineMongoDBBundle] added container aware fixture loader
Updated load data fixtures command in DoctrineMongoDBBundle to be identical to the one in DoctrineBundle
Created custom loader, that passes $container to all ContainerAware DataFixtures
2011-02-08 04:11:47 +01:00
Bulat Shakirzyanov
734be8107c [DoctrineMongoDBBundle] fixed UniqueValidatorTest to mark skipped if Doctrine\ODM classes not found 2011-02-08 04:11:47 +01:00
Fabien Potencier
e5403490e7 removed the need to define getNamespace() and getPath() in bundles 2011-02-05 22:40:30 +01:00
Jeremy Mikola
743f25a287 [DependencyInjection] Create explicit factoryClass property for Definitions
Previously, the Definition class was used both for type inference and factory construction (if factoryService was absent). This is fine for cases where classes create instances of themselves (e.g. getInstance() or create()), but leads to ambiguity when we have a separate factory class.
2011-02-05 20:39:42 +01:00
Fabien Potencier
f455700b88 fixed previous commit 2011-02-04 12:18:26 +01:00
Victor Berchet
3ed47114d6 [Bundle] Make getPath() less error prone by allowing both backward and forward slashes 2011-02-04 12:12:19 +01:00
Fabien Potencier
1893e4e250 [DoctrineMongoDBBundle] fixed merge problem 2011-02-01 16:51:54 +01:00
Fabien Potencier
2889e91c27 [DoctrineMongoDBBundle] fixed unit tests 2011-02-01 13:35:39 +01:00
Bulat Shakirzyanov
132e5805b3 [DoctrineMongoDBBundle] fixed annotations ns conflict, switched to @mongodb:Unique annotation 2011-02-01 13:19:37 +01:00
Bulat Shakirzyanov
ff34f7d281 [DoctrineMongoDBBundle] added support for multiple document managers 2011-01-26 22:25:21 +01:00
Johannes M. Schmitt
cf64d2cfe7 namespace changes
Symfony\Component\Security -> Symfony\Component\Security\Core
Symfony\Component\Security\Acl remains unchanged
Symfony\Component\HttpKernel\Security -> Symfony\Component\Security\Http
2011-01-26 22:23:20 +01:00
Fabien Potencier
b154643b65 Revert "[DoctrineBundle][DoctrineMongoDBBundle] Create DIC params for security user provider EM/DM aliases"
This reverts commit 24c7715029.
2011-01-26 20:33:08 +01:00
Jeremy Mikola
24c7715029 [DoctrineBundle][DoctrineMongoDBBundle] Create DIC params for security user provider EM/DM aliases
Also changed the default alias to Doctrine's own canonical aliases for the default EM/DM.
2011-01-26 19:37:12 +01:00
Johannes Schmitt
57ae50e894 [Security] many improvements, and fixes 2011-01-26 16:38:54 +01:00
Bulat Shakirzyanov
558268331b [DoctrineMongoDBBundle] added a check that fixture dir exists 2011-01-24 22:22:16 +01:00
Ryan Weaver
bcd0afdab1 [DoctrineMongoDBBundle] Fixing bad hydrator namespace. 2011-01-23 20:23:41 +01:00
Ryan Weaver
05dc63c19e [DoctrineMongoDBBundle] Removing unused option. 2011-01-23 20:23:41 +01:00
Ryan Weaver
65d2e92902 [DoctrineMongoDBBundle] Removing duplicate test (this same line is about ten lines up). 2011-01-23 20:23:41 +01:00
Ryan Weaver
7bd5171fa1 [DoctrineMongoDBBundle] This parameter may be necessary, but it was not currently implemented (and it's set to the default that's set internally). So, I've removed it. 2011-01-23 20:23:41 +01:00
Johannes M. Schmitt
8d19136a55 refactors extensions to call XXXLoad only once with all config sections 2011-01-21 17:04:18 +01:00
Henrik Bjørnskov
5e9c9f4174 Template rename fix files 2011-01-21 15:06:10 +01:00
Henrik Bjørnskov
a5007febdd [FrameworkBundle] Renderer is once more the last of the templates 2011-01-21 15:06:10 +01:00
Ryan Weaver
17f9162b89 [Standards] Changing many instances of "boolean" to "Boolean". 2011-01-21 09:53:24 +01:00
Fabien Potencier
6d1e91a1fa refactored bundle management
Before I explain the changes, let's talk about the current state.

Before this patch, the registerBundleDirs() method returned an ordered (for
resource overloading) list of namespace prefixes and the path to their
location. Here are some problems with this approach:

 * The paths set by this method and the paths configured for the autoloader
   can be disconnected (leading to unexpected behaviors);

 * A bundle outside these paths worked, but unexpected behavior can occur;

 * Choosing a bundle namespace was limited to the registered namespace
   prefixes, and their number should stay low enough (for performance reasons)
   -- moreover the current Bundle\ and Application\ top namespaces does not
   respect the standard rules for namespaces (first segment should be the
   vendor name);

 * Developers must understand the concept of "namespace prefixes" to
   understand the overloading mechanism, which is one more thing to learn,
   which is Symfony specific;

 * Each time you want to get a resource that can be overloaded (a template for
   instance), Symfony would have tried all namespace prefixes one after the
   other until if finds a matching file. But that can be computed in advance
   to reduce the overhead.

Another topic which was not really well addressed is how you can reference a
file/resource from a bundle (and take into account the possibility of
overloading). For instance, in the routing, you can import a file from a
bundle like this:

  <import resource="FrameworkBundle/Resources/config/internal.xml" />

Again, this works only because we have a limited number of possible namespace
prefixes.

This patch addresses these problems and some more.

First, the registerBundleDirs() method has been removed. It means that you are
now free to use any namespace for your bundles. No need to have specific
prefixes anymore. You are also free to store them anywhere, in as many
directories as you want. You just need to be sure that they are autoloaded
correctly.

The bundle "name" is now always the short name of the bundle class (like
FrameworkBundle or SensioCasBundle). As the best practice is to prefix the
bundle name with the vendor name, it's up to the vendor to ensure that each
bundle name is unique. I insist that a bundle name must be unique. This was
the opposite before as two bundles with the same name was how Symfony2 found
inheritance.

A new getParent() method has been added to BundleInterface. It returns the
bundle name that the bundle overrides (this is optional of course). That way,
there is no ordering problem anymore as the inheritance tree is explicitely
defined by the bundle themselves.

So, with this system, we can easily have an inheritance tree like the
following:

FooBundle < MyFooBundle < MyCustomFooBundle

MyCustomFooBundle returns MyFooBundle for the getParent() method, and
MyFooBundle returns FooBundle.

If two bundles override the same bundle, an exception is thrown.

Based on the bundle name, you can now reference any resource with this
notation:

    @FooBundle/Resources/config/routing.xml
    @FooBundle/Controller/FooController.php

This notation is the input of the Kernel::locateResource() method, which
returns the location of the file (and of course it takes into account
overloading).

So, in the routing, you can now use the following:

    <import resource="@FrameworkBundle/Resources/config/internal.xml" />

The template loading mechanism also use this method under the hood.

As a bonus, all the code that converts from internal notations to file names
(controller names: ControllerNameParser, template names: TemplateNameParser,
resource paths, ...) is now contained in several well-defined classes. The
same goes for the code that look for templates (TemplateLocator), routing
files (FileLocator), ...

As a side note, it is really easy to also support multiple-inheritance for a
bundle (for instance if a bundle returns an array of bundle names it extends).
However, this is not implemented in this patch as I'm not sure we want to
support that.

How to upgrade:

 * Each bundle must now implement two new mandatory methods: getPath() and
   getNamespace(), and optionally the getParent() method if the bundle extends
   another one. Here is a common implementation for these methods:

    /**
     * {@inheritdoc}
     */
    public function getParent()
    {
        return 'MyFrameworkBundle';
    }

    /**
     * {@inheritdoc}
     */
    public function getNamespace()
    {
        return __NAMESPACE__;
    }

    /**
     * {@inheritdoc}
     */
    public function getPath()
    {
        return strtr(__DIR__, '\\', '/');
    }

 * The registerBundleDirs() can be removed from your Kernel class;

 * If your code relies on getBundleDirs() or the kernel.bundle_dirs parameter,
   it should be upgraded to use the new interface (see Doctrine commands for
   many example of such a change);

 * When referencing a bundle, you must now always use its name (no more \ or /
   in bundle names) -- this transition was already done for most things
   before, and now applies to the routing as well;

 * Imports in routing files must be changed:
    Before: <import resource="Sensio/CasBundle/Resources/config/internal.xml" />
    After:  <import resource="@SensioCasBundle/Resources/config/internal.xml" />
2011-01-20 18:42:47 +01:00
Bulat Shakirzyanov
04fd4194b5 [DoctrineMongoDBBundle] fixed typo, updated extension test to reflection validation addon 2011-01-20 07:13:37 +01:00
Victor Berchet
b75840c6fc DI Extension: use the base class from the HttpKernel Component 2011-01-19 22:08:41 +01:00
Bulat Shakirzyanov
6d52645861 [DoctrineMongoDBBundle] registered new validation namespace for annotations 2011-01-19 21:50:51 +01:00
Bulat Shakirzyanov
1cbd0caa89 [DoctrineMongoDBBundle] added unique constraint, validator and test, registered validator in DIC 2011-01-19 21:50:47 +01:00
Fabien Potencier
12f3497281 simplified Doctrine unit tests 2011-01-19 08:22:13 +01:00
Fabien Potencier
23a7d3657a fixed Doctrine commands help message 2011-01-19 08:20:04 +01:00
Dominique Bongiraud
64fb94c725 normalized license messages in PHP files 2011-01-18 08:07:46 +01:00
Fabien Potencier
4c2537f1c3 made data collectors private 2011-01-17 11:17:48 +01:00
Bulat Shakirzyanov
8235f71f57 [DoctrineMongoDBBundle] switched to compiler passes for proxy/hydrator directory creation and event listeners 2011-01-16 20:45:55 +01:00
Fabien Potencier
5c64ca8a30 renamed Container::freeze() to Container::compile() 2011-01-16 08:12:36 +01:00
Fabien Potencier
a365ab2884 changed the template name format
Before

bundle:section:template.format.renderer

After

bundle:section:template.renderer.format

Notice that both the renderer and the format are mandatory.
2011-01-15 12:33:27 +01:00
Johannes Schmitt
3785a99b94 adds visibility to aliases 2011-01-07 15:58:48 +01:00