This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/UPDATE.md

342 lines
10 KiB
Markdown
Raw Normal View History

How to update your project?
===========================
This document explains how to upgrade from one Symfony2 PR version to the next
one. It only discusses changes that need to be done when using the "public"
API of the framework. If you "hack" the core, you should probably follow the
timeline closely anyway.
beta1 to beta2
--------------
* The ``error_handler`` setting has been removed. The ``ErrorHandler`` class
is now managed directly by Symfony SE in ``AppKernel``.
* The Doctrine metadata files has moved from
``Resources/config/doctrine/metadata/orm/`` to ``Resources/config/doctrine``
and the extension from ``.dcm.yml`` to ``.orm.yml``
Before:
Resources/config/doctrine/metadata/orm/Bundle.Entity.dcm.xml
Resources/config/doctrine/metadata/orm/Bundle.Entity.dcm.yml
After:
Resources/config/doctrine/Bundle.Entity.orm.xml
Resources/config/doctrine/Bundle.Entity.orm.yml
* With the introduction of a new Doctrine Registry class, the following
parameters have been removed (replaced by methods on the `doctrine`
service):
* doctrine.orm.entity_managers
* doctrine.orm.default_entity_manager
* doctrine.dbal.default_connection
Before:
$container->getParameter('doctrine.orm.entity_managers')
$container->getParameter('doctrine.orm.default_entity_manager')
$container->getParameter('doctrine.orm.default_connection')
After:
$container->get('doctrine')->getEntityManagerNames()
$container->get('doctrine')->getDefaultEntityManagerName()
$container->get('doctrine')->getDefaultConnectionName()
But you don't really need to use these methods anymore, as to get an entity
manager, you can now use the registry directly:
Before:
$em = $this->get('doctrine.orm.entity_manager');
$em = $this->get('doctrine.orm.foobar_entity_manager');
After:
$em = $this->get('doctrine')->getEntityManager();
$em = $this->get('doctrine')->getEntityManager('foobar');
* The `doctrine:generate:entities` arguments and options changed. Run
`./app/console doctrine:generate:entities --help` for more information about
the new syntax.
* The `doctrine:generate:repositories` command has been removed. The
functionality has been moved to the `doctrine:generate:entities`.
* Doctrine event subscribers now use a unique "doctrine.event_subscriber" tag.
Doctrine event listeners also use a unique "doctrine.event_listener" tag. To
specify a connection, use the optional "connection" attribute.
Before:
listener:
class: MyEventListener
tags:
- { name: doctrine.common.event_listener, event: name }
- { name: doctrine.dbal.default_event_listener, event: name }
subscriber:
class: MyEventSubscriber
tags:
- { name: doctrine.common.event_subscriber }
- { name: doctrine.dbal.default_event_subscriber }
After:
listener:
class: MyEventListener
tags:
- { name: doctrine.event_listener, event: name } # register for all connections
- { name: doctrine.event_listener, event: name, connection: default } # only for the default connection
subscriber:
class: MyEventSubscriber
tags:
- { name: doctrine.event_subscriber } # register for all connections
- { name: doctrine.event_subscriber, connection: default } # only for the default connection
2011-04-30 06:25:08 +01:00
* Application translations are now stored in the `Resources` directory:
Before:
app/translations/catalogue.fr.xml
After:
2011-04-30 06:25:08 +01:00
app/Resources/translations/catalogue.fr.xml
* The option "modifiable" of the "collection" form type was split into two
options "allow_add" and "allow_delete".
Before:
$builder->add('tags', 'collection', array(
'type' => 'text',
'modifiable' => true,
));
After:
$builder->add('tags', 'collection', array(
'type' => 'text',
'allow_add' => true,
'allow_delete' => true,
));
* Serializer: The NormalizerInterface's `supports()` method has been split in
two methods: `supportsNormalization` and `supportsDenormalization`.
2011-05-08 17:23:26 +01:00
* Serializer: `AbstractEncoder` & `AbstractNormalizer` were renamed to
`SerializerAwareEncoder` & `SerializerAwareNormalizer`.
PR12 to beta1
-------------
* The CSRF secret configuration has been moved to a mandatory global `secret`
setting (as the secret is now used for everything and not just CSRF):
Before:
framework:
csrf_protection:
secret: S3cr3t
After:
framework:
secret: S3cr3t
2011-04-27 15:08:50 +01:00
* The `File::getWebPath()` and `File::rename()` methods have been removed, as
well as the `framework.document_root` configuration setting.
2011-04-22 12:45:23 +01:00
* The `session` configuration has been refactored:
* The `class` option has been removed (use the `session.class` parameter
instead);
* The PDO session storage configuration has been removed (a cookbook recipe
is in the work);
* The `storage_id` option now takes a service id instead of just part of it.
* The `DoctrineMigrationsBundle` and `DoctrineFixturesBundle` bundles have
been moved to their own repositories.
2011-04-22 09:14:23 +01:00
* The form framework has been refactored extensively (more information in the
documentation).
* The `trans` tag does not accept a message as an argument anymore:
{% trans "foo" %}
{% trans foo %}
Use the long version the tags or the filter instead:
{% trans %}foo{% endtrans %}
{{ foo|trans }}
This has been done to clarify the usage of the tag and filter and also to
make it clearer when the automatic output escaping rules are applied (see
the doc for more information).
2011-04-20 12:48:32 +01:00
* Some methods in the DependencyInjection component's ContainerBuilder and
Definition classes have been renamed to be more specific and consistent:
Before:
$container->remove('my_definition');
$definition->setArgument(0, 'foo');
After:
$container->removeDefinition('my_definition');
$definition->replaceArgument(0, 'foo');
2011-04-22 12:45:23 +01:00
* In the rememberme configuration, the `token_provider key` now expects a real
service id instead of only a suffix.
2011-04-20 12:48:32 +01:00
PR11 to PR12
------------
2011-04-19 13:05:08 +01:00
* HttpFoundation\Cookie::getExpire() was renamed to getExpiresTime()
2011-04-15 09:47:21 +01:00
* XML configurations have been normalized. All tags with only one attribute
have been converted to tag content:
Before:
<bundle name="MyBundle" />
2011-04-15 09:47:21 +01:00
<app:engine id="twig" />
<twig:extension id="twig.extension.debug" />
After:
<bundle>MyBundle</bundle>
2011-04-15 09:47:21 +01:00
<app:engine>twig</app:engine>
<twig:extension>twig.extension.debug</twig:extension>
* Fixes a critical security issue which allowed all users to switch to
2011-04-19 11:12:29 +01:00
arbitrary accounts when the SwitchUserListener was activated. Configurations
which do not use the SwitchUserListener are not affected.
* The Dependency Injection Container now strongly validates the references of
all your services at the end of its compilation process. If you have invalid
references this will result in a compile-time exception instead of a run-time
exception (the previous behavior).
PR10 to PR11
------------
* Extension configuration classes should now implement the
`Symfony\Component\Config\Definition\ConfigurationInterface` interface. Note
that the BC is kept but implementing this interface in your extensions will
allow for further developments.
* The "fingerscrossed" Monolog option has been renamed to "fingers_crossed".
2011-04-04 10:36:28 +01:00
PR9 to PR10
2011-03-31 05:52:18 +01:00
-----------
2011-04-04 10:36:28 +01:00
* Bundle logical names earned back their `Bundle` suffix:
*Controllers*: `Blog:Post:show` -> `BlogBundle:Post:show`
*Templates*: `Blog:Post:show.html.twig` -> `BlogBundle:Post:show.html.twig`
*Resources*: `@Blog/Resources/config/blog.xml` -> `@BlogBundle/Resources/config/blog.xml`
*Doctrine*: `$em->find('Blog:Post', $id)` -> `$em->find('BlogBundle:Post', $id)`
2011-04-04 11:45:31 +01:00
* `ZendBundle` has been replaced by `MonologBundle`. Have a look at the
changes made to Symfony SE to see how to upgrade your projects:
https://github.com/symfony/symfony-standard/pull/30/files
2011-04-04 10:44:44 +01:00
* Almost all core bundles parameters have been removed. You should use the
settings exposed by the bundle extension configuration instead.
* Some core bundles service names changed for better consistency.
2011-03-31 05:52:18 +01:00
* Namespace for validators has changed from `validation` to `assert` (it was
announced for PR9 but it was not the case then):
Before:
@validation:NotNull
After:
@assert:NotNull
Moreover, the `Assert` prefix used for some constraints has been removed
(`AssertTrue` to `True`).
2011-04-04 10:44:44 +01:00
* `ApplicationTester::getDisplay()` and `CommandTester::getDisplay()` method
now return the command exit code
PR8 to PR9
----------
* `Symfony\Bundle\FrameworkBundle\Util\Filesystem` has been moved to
`Symfony\Component\HttpKernel\Util\Filesystem`
* The `Execute` constraint has been renamed to `Callback`
* The HTTP exceptions classes signatures have changed:
2011-03-29 08:28:20 +01:00
Before:
throw new NotFoundHttpException('Not Found', $message, 0, $e);
After:
throw new NotFoundHttpException($message, $e);
* The RequestMatcher class does not add `^` and `$` anymore to regexp.
You need to update your security configuration accordingly for instance:
Before:
pattern: /_profiler.*
pattern: /login
After:
pattern: ^/_profiler
pattern: ^/login$
* Global templates under `app/` moved to a new location (old directory did not
work anyway):
Before:
2011-03-29 08:28:20 +01:00
app/views/base.html.twig
app/views/AcmeDemoBundle/base.html.twig
After:
2011-03-29 08:28:20 +01:00
app/Resources/views/base.html.twig
2011-03-28 18:25:40 +01:00
app/Resources/AcmeDemo/views/base.html.twig
* Bundle logical names lose their `Bundle` suffix:
*Controllers*: `BlogBundle:Post:show` -> `Blog:Post:show`
2011-03-28 17:44:40 +01:00
*Templates*: `BlogBundle:Post:show.html.twig` -> `Blog:Post:show.html.twig`
2011-03-28 17:44:40 +01:00
*Resources*: `@BlogBundle/Resources/config/blog.xml` -> `@Blog/Resources/config/blog.xml`
2011-03-28 17:44:40 +01:00
*Doctrine*: `$em->find('BlogBundle:Post', $id)` -> `$em->find('Blog:Post', $id)`
* Assetic filters must be now explicitly loaded:
assetic:
filters:
cssrewrite: ~
yui_css:
jar: "/path/to/yuicompressor.jar"
my_filter:
resource: "%kernel.root_dir%/config/my_filter.xml"
foo: bar