2016-01-27 23:13:26 +00:00
|
|
|
UPGRADE FROM 3.x to 4.0
|
|
|
|
=======================
|
|
|
|
|
2016-06-16 07:59:21 +01:00
|
|
|
Debug
|
|
|
|
-----
|
|
|
|
|
|
|
|
* `FlattenException::getTrace()` now returns additional type descriptions
|
|
|
|
`integer` and `float`.
|
|
|
|
|
2016-01-27 23:13:26 +00:00
|
|
|
DependencyInjection
|
|
|
|
-------------------
|
|
|
|
|
2016-05-05 07:52:44 +01:00
|
|
|
* Calling `get()` on a `ContainerBuilder` instance before compiling the
|
|
|
|
container is not supported anymore and will throw an exception.
|
|
|
|
|
2016-01-27 23:13:26 +00:00
|
|
|
* Using unsupported configuration keys in YAML configuration files raises an
|
|
|
|
exception.
|
|
|
|
|
|
|
|
* Using unsupported options to configure service aliases raises an exception.
|
|
|
|
|
2016-06-22 21:01:50 +01:00
|
|
|
* Setting or unsetting a private service with the `Container::set()` method is
|
|
|
|
no longer supported. Only public services can be set or unset.
|
|
|
|
|
|
|
|
* Checking the existence of a private service with the `Container::has()`
|
|
|
|
method is no longer supported and will return `false`.
|
|
|
|
|
|
|
|
* Requesting a private service with the `Container::get()` method is no longer
|
|
|
|
supported.
|
|
|
|
|
2016-01-27 23:13:26 +00:00
|
|
|
Form
|
|
|
|
----
|
|
|
|
|
|
|
|
* The `choices_as_values` option of the `ChoiceType` has been removed.
|
2016-03-29 09:52:53 +01:00
|
|
|
|
2016-02-18 14:03:27 +00:00
|
|
|
* Support for data objects that implements both `Traversable` and
|
2016-04-01 02:30:15 +01:00
|
|
|
`ArrayAccess` in `ResizeFormListener::preSubmit` method has been removed.
|
2016-04-25 18:10:03 +01:00
|
|
|
|
|
|
|
* Using callable strings as choice options in ChoiceType is not supported
|
2016-03-05 09:39:42 +00:00
|
|
|
anymore in favor of passing PropertyPath instances.
|
2016-04-25 18:10:03 +01:00
|
|
|
|
2016-03-05 09:39:42 +00:00
|
|
|
Before:
|
2016-04-25 18:10:03 +01:00
|
|
|
|
2016-03-05 09:39:42 +00:00
|
|
|
```php
|
|
|
|
'choice_value' => new PropertyPath('range'),
|
|
|
|
'choice_label' => 'strtoupper',
|
|
|
|
```
|
2016-04-25 18:10:03 +01:00
|
|
|
|
2016-03-05 09:39:42 +00:00
|
|
|
After:
|
2016-04-25 18:10:03 +01:00
|
|
|
|
2016-03-05 09:39:42 +00:00
|
|
|
```php
|
|
|
|
'choice_value' => 'range',
|
|
|
|
'choice_label' => function ($choice) {
|
|
|
|
return strtoupper($choice);
|
|
|
|
},
|
|
|
|
```
|
2016-04-25 18:10:03 +01:00
|
|
|
|
2016-04-28 12:31:04 +01:00
|
|
|
* Caching of the loaded `ChoiceListInterface` in the `LazyChoiceList` has been removed,
|
|
|
|
it must be cached in the `ChoiceLoaderInterface` implementation instead.
|
2016-01-27 23:13:26 +00:00
|
|
|
|
2016-02-01 19:26:57 +00:00
|
|
|
* Calling `isValid()` on a `Form` instance before submitting it is not supported
|
|
|
|
anymore and raises an exception.
|
|
|
|
|
|
|
|
Before:
|
|
|
|
|
|
|
|
```php
|
|
|
|
if ($form->isValid()) {
|
|
|
|
// ...
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
After:
|
|
|
|
|
|
|
|
```php
|
|
|
|
if ($form->isSubmitted() && $form->isValid()) {
|
|
|
|
// ...
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
2016-04-01 02:30:15 +01:00
|
|
|
FrameworkBundle
|
|
|
|
---------------
|
|
|
|
|
|
|
|
* Support for absolute template paths has been removed.
|
|
|
|
|
|
|
|
* The following form types registered as services have been removed; use their
|
|
|
|
fully-qualified class name instead:
|
2016-03-29 09:52:53 +01:00
|
|
|
|
|
|
|
- `"form.type.birthday"`
|
|
|
|
- `"form.type.checkbox"`
|
|
|
|
- `"form.type.collection"`
|
|
|
|
- `"form.type.country"`
|
|
|
|
- `"form.type.currency"`
|
|
|
|
- `"form.type.date"`
|
|
|
|
- `"form.type.datetime"`
|
|
|
|
- `"form.type.email"`
|
|
|
|
- `"form.type.file"`
|
|
|
|
- `"form.type.hidden"`
|
|
|
|
- `"form.type.integer"`
|
|
|
|
- `"form.type.language"`
|
|
|
|
- `"form.type.locale"`
|
|
|
|
- `"form.type.money"`
|
|
|
|
- `"form.type.number"`
|
|
|
|
- `"form.type.password"`
|
|
|
|
- `"form.type.percent"`
|
|
|
|
- `"form.type.radio"`
|
|
|
|
- `"form.type.range"`
|
|
|
|
- `"form.type.repeated"`
|
|
|
|
- `"form.type.search"`
|
|
|
|
- `"form.type.textarea"`
|
|
|
|
- `"form.type.text"`
|
|
|
|
- `"form.type.time"`
|
|
|
|
- `"form.type.timezone"`
|
|
|
|
- `"form.type.url"`
|
|
|
|
- `"form.type.button"`
|
|
|
|
- `"form.type.submit"`
|
|
|
|
- `"form.type.reset"`
|
|
|
|
|
2016-06-29 20:45:06 +01:00
|
|
|
* The `framework.serializer.cache` option and the services
|
|
|
|
`serializer.mapping.cache.apc` and `serializer.mapping.cache.doctrine.apc`
|
|
|
|
have been removed. APCu should now be automatically used when available.
|
2016-04-11 14:31:32 +01:00
|
|
|
|
|
|
|
* The `Controller::getUser()` method has been removed in favor of the ability
|
|
|
|
to typehint the security user object in the action.
|
2016-04-25 18:10:03 +01:00
|
|
|
|
2016-02-10 16:55:01 +00:00
|
|
|
HttpKernel
|
|
|
|
----------
|
|
|
|
|
2016-07-04 12:11:13 +01:00
|
|
|
* Possibility to pass non-scalar values as URI attributes to the ESI and SSI
|
|
|
|
renderers has been removed. The inline fragment renderer should be used with
|
|
|
|
non-scalar attributes.
|
2016-02-10 16:55:01 +00:00
|
|
|
|
2016-04-09 19:18:57 +01:00
|
|
|
* The `ControllerResolver::getArguments()` method has been removed. If you
|
|
|
|
have your own `ControllerResolverInterface` implementation, you should
|
|
|
|
inject an `ArgumentResolverInterface` instance.
|
|
|
|
|
2016-01-27 23:13:26 +00:00
|
|
|
Serializer
|
|
|
|
----------
|
|
|
|
|
|
|
|
* The ability to pass a Doctrine `Cache` instance to the `ClassMetadataFactory`
|
|
|
|
class has been removed. You should use the `CacheClassMetadataFactory` class
|
|
|
|
instead.
|
|
|
|
|
2016-03-24 09:23:20 +00:00
|
|
|
Translation
|
|
|
|
-----------
|
|
|
|
|
|
|
|
* Removed the backup feature from the file dumper classes.
|
|
|
|
|
2016-01-27 23:13:26 +00:00
|
|
|
Yaml
|
|
|
|
----
|
|
|
|
|
2016-02-15 17:14:40 +00:00
|
|
|
* Starting an unquoted string with `%` leads to a `ParseException`.
|
|
|
|
|
2016-02-09 22:58:46 +00:00
|
|
|
* The `Dumper::setIndentation()` method was removed. Pass the indentation
|
|
|
|
level to the constructor instead.
|
|
|
|
|
2016-02-08 18:49:14 +00:00
|
|
|
* Removed support for passing `true`/`false` as the second argument to the
|
|
|
|
`parse()` method to trigger exceptions when an invalid type was passed.
|
|
|
|
|
|
|
|
Before:
|
|
|
|
|
|
|
|
```php
|
|
|
|
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', true);
|
|
|
|
```
|
|
|
|
|
|
|
|
After:
|
|
|
|
|
|
|
|
```php
|
2016-02-09 20:01:34 +00:00
|
|
|
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', Yaml::PARSE_EXCEPTION_ON_INVALID_TYPE);
|
2016-02-08 18:49:14 +00:00
|
|
|
```
|
|
|
|
|
|
|
|
* Removed support for passing `true`/`false` as the third argument to the
|
|
|
|
`parse()` method to toggle object support.
|
|
|
|
|
|
|
|
Before:
|
|
|
|
|
|
|
|
```php
|
|
|
|
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', false, true);
|
|
|
|
```
|
|
|
|
|
|
|
|
After:
|
|
|
|
|
|
|
|
```php
|
|
|
|
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', Yaml::PARSE_OBJECT);
|
|
|
|
```
|
|
|
|
|
|
|
|
* Removed support for passing `true`/`false` as the fourth argument to the
|
|
|
|
`parse()` method to parse objects as maps.
|
|
|
|
|
|
|
|
Before:
|
|
|
|
|
|
|
|
```php
|
|
|
|
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', false, false, true);
|
|
|
|
```
|
|
|
|
|
|
|
|
After:
|
|
|
|
|
|
|
|
```php
|
|
|
|
Yaml::parse('{ "foo": "bar", "fiz": "cat" }', Yaml::PARSE_OBJECT_FOR_MAP);
|
|
|
|
```
|
|
|
|
|
2016-02-09 19:56:50 +00:00
|
|
|
* Removed support for passing `true`/`false` as the fourth argument to the
|
|
|
|
`dump()` method to trigger exceptions when an invalid type was passed.
|
|
|
|
|
|
|
|
Before:
|
|
|
|
|
|
|
|
```php
|
|
|
|
Yaml::dump(array('foo' => new A(), 'bar' => 1), 0, 0, true);
|
|
|
|
```
|
|
|
|
|
|
|
|
After:
|
|
|
|
|
|
|
|
```php
|
|
|
|
Yaml::dump(array('foo' => new A(), 'bar' => 1), 0, 0, Yaml::DUMP_EXCEPTION_ON_INVALID_TYPE);
|
|
|
|
```
|
|
|
|
|
2016-04-01 02:30:15 +01:00
|
|
|
* Removed support for passing `true`/`false` as the fifth argument to the
|
|
|
|
`dump()` method to toggle object support.
|
2016-01-27 19:42:59 +00:00
|
|
|
|
|
|
|
Before:
|
|
|
|
|
|
|
|
```php
|
|
|
|
Yaml::dump(array('foo' => new A(), 'bar' => 1), 0, 0, false, true);
|
|
|
|
```
|
|
|
|
|
|
|
|
After:
|
|
|
|
|
|
|
|
```php
|
|
|
|
Yaml::dump(array('foo' => new A(), 'bar' => 1), 0, 0, false, Yaml::DUMP_OBJECT);
|
|
|
|
```
|
|
|
|
|
2016-01-27 23:13:26 +00:00
|
|
|
* The `!!php/object` tag to indicate dumped PHP objects was removed in favor of
|
|
|
|
the `!php/object` tag.
|
2015-05-03 23:10:27 +01:00
|
|
|
|
|
|
|
Validator
|
|
|
|
---------
|
|
|
|
|
|
|
|
* The `DateTimeValidator::PATTERN` constant was removed.
|
2015-12-31 16:39:30 +00:00
|
|
|
|
|
|
|
* `Tests\Constraints\AbstractConstraintValidatorTest` has been removed in
|
|
|
|
favor of `Test\ConstraintValidatorTestCase`.
|
|
|
|
|
|
|
|
Before:
|
|
|
|
|
|
|
|
```php
|
|
|
|
// ...
|
|
|
|
use Symfony\Component\Validator\Tests\Constraints\AbstractConstraintValidatorTest;
|
|
|
|
|
|
|
|
class MyCustomValidatorTest extends AbstractConstraintValidatorTest
|
|
|
|
{
|
|
|
|
// ...
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
After:
|
|
|
|
|
|
|
|
```php
|
|
|
|
// ...
|
|
|
|
use Symfony\Component\Validator\Test\ConstraintValidatorTestCase;
|
|
|
|
|
|
|
|
class MyCustomValidatorTest extends ConstraintValidatorTestCase
|
|
|
|
{
|
|
|
|
// ...
|
|
|
|
}
|
|
|
|
```
|