Commit Graph

17009 Commits

Author SHA1 Message Date
Fabien Potencier
4b19daf1b0 feature #14052 [FrameworkBundle] added a protected shortcut getParameter() method in the base Controller class. (hhamon)
This PR was merged into the 2.7 branch.

Discussion
----------

[FrameworkBundle] added a protected shortcut getParameter() method in the base Controller class.

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

Commits
-------

5d96f4d [FrameworkBundle] added a protected shortcut getParameter() method in the base Controller class.
2015-04-02 15:28:00 +02:00
Fabien Potencier
96d83a7184 minor #14133 Remove dead code from FrameworkExtension & LogoutUrlHelper (stloyd)
This PR was merged into the 2.7 branch.

Discussion
----------

Remove dead code from FrameworkExtension & LogoutUrlHelper

| Q             | A
| ------------- | ---
| Bug fix?      | yes?
| New feature?  | no
| BC breaks?    | no
| Tests pass?   | yes
| License       | MIT

Commits
-------

13ec9ff Remove dead code from FrameworkExtension & LogoutUrlHelper
2015-04-02 14:36:16 +02:00
Javier Eguiluz
dbd02b0871 Use specialized config methods instead of the generic ifTrue() method 2015-04-02 13:05:24 +02:00
Christophe Coevoet
9d6c0b1c30 Fix the AJAX profiling
The fix for IE8 which does not have the addEventListener method on
XMLHttpRequest broke the feature for modern browsers because it was
checking the existence on the wrong object. It is a method on the
instance, not on the "class", and so should be checked on the prototype.
2015-04-02 11:50:50 +02:00
Fabien Potencier
de02c5f962 bumped Symfony version to 2.6.7 2015-04-01 20:51:37 +02:00
Fabien Potencier
48c9e835a8 updated VERSION for 2.6.6 2015-04-01 18:55:26 +02:00
Nicolas Grekas
06f92fc2d5 Safe escaping of fragments for eval() 2015-04-01 18:53:45 +02:00
Fabien Potencier
ec2cb961cc Merge branch '2.3' into 2.6
* 2.3:
  bumped Symfony version to 2.3.28
  updated VERSION for 2.3.27
  update CONTRIBUTORS for 2.3.27
  updated CHANGELOG for 2.3.27
  isFromTrustedProxy to confirm request came from a trusted proxy.
  Safe escaping of fragments for eval()

Conflicts:
	src/Symfony/Component/HttpFoundation/Request.php
	src/Symfony/Component/HttpKernel/HttpCache/Esi.php
	src/Symfony/Component/HttpKernel/Kernel.php
2015-04-01 18:50:12 +02:00
Fabien Potencier
feb48c26b3 bumped Symfony version to 2.3.28 2015-04-01 17:29:10 +02:00
Fabien Potencier
ce4aab1508 updated VERSION for 2.3.27 2015-04-01 16:28:26 +02:00
Fabien Potencier
3594ea4ec1 security #14167 n/a (nicolas-grekas)
This PR was merged into the 2.3 branch.

Discussion
----------

n/a

Commits
-------

195c57e Safe escaping of fragments for eval()
2015-04-01 16:19:30 +02:00
James Gilliland
6c73f0ce93 isFromTrustedProxy to confirm request came from a trusted proxy. 2015-04-01 16:16:10 +02:00
Nicolas Grekas
195c57e1f5 Safe escaping of fragments for eval() 2015-04-01 16:15:02 +02:00
Diego Saint Esteben
17d265a526 Added missing changelog entry 2015-04-01 10:08:53 -03:00
Nicolas Grekas
5188cfecc5 feature #14080 [VarDumper] Add casters for Reflection* classes (nicolas-grekas)
This PR was merged into the 2.7 branch.

Discussion
----------

[VarDumper] Add casters for Reflection* classes

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Will need a rebase on top of #14079 and #14077 to be mergeable/green.

Commits
-------

64d6e76 [VarDumper] Add casters for Reflection* classes
2015-04-01 13:40:31 +02:00
Bernhard Schussek
7523f685eb [TwigBridge] Pushed symfony/form dependency from ~2.6 to ~2.7 2015-04-01 13:22:40 +02:00
Bernhard Schussek
2b5efbbd35 [FrameworkBundle] Pushed symfony/form dependency from ~2.6 to to ~2.7 2015-04-01 13:20:04 +02:00
Bernhard Schussek
776796435e feature #14050 [Form] Refactored choice lists to support dynamic label, value, index and attribute generation (webmozart)
This PR was merged into the 2.7 branch.

Discussion
----------

[Form] Refactored choice lists to support dynamic label, value, index and attribute generation

This is a rebase of #12148 on the 2.7 branch.

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | yes
| Deprecations? | yes
| Tests pass?   | yes
| Fixed tickets | #4067, #5494, #3836, #8658, #12148
| License       | MIT
| Doc PR        | TODO

I implemented the additional options "choice_label", "choice_name", "choice_value", "choice_attr", "group_by" and "choices_as_values" for ChoiceType. Additionally the "preferred_choices" option was updated to accept callables and property paths.

The "choices_as_values" option will be removed in Symfony 3.0, where the choices will be passed in the values of the "choices" option by default. The reason for that is that, right now, choices are limited to strings and integers (i.e. valid array keys). When we flip the array, we remove that limitation. Since choice labels are always strings, we can also always use them as array keys:

```php
// Not possible currently, but possible with "flip_choices"
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => true,
        'No' => false,
        'Maybe' => null,
    ),
    'choices_as_values' => true,
));
```

All the features described here obviously also apply to subtypes of "choice", such as "entity".

**choice_label**

Returns the label for each choice. Can be a callable (which receives the choice as first and the key of the "choices" array as second argument) or a property path.

If `null`, the keys of the "choices" array are used as labels.

```php
// callable
$builder->add('attending', 'choice', array(
    'choices' => array(
        'yes' => true,
        'no' => false,
        'maybe' => null,
    ),
    'choices_as_values' => true,
    'choice_label' => function ($choice, $key) {
        return 'form.choice.'.$key;
    },
));

// property path
$builder->add('attending', 'choice', array(
    'choices' => array(
        Status::getInstance(Status::YES),
        Status::getInstance(Status::NO),
        Status::getInstance(Status::MAYBE),
    ),
    'choices_as_values' => true,
    'choice_label' => 'displayName',
));
```

**choice_name**

Returns the form name for each choice. That name is used as name of the checkbox/radio form for this choice. It is also used as index of the choice views in the template. Can be a callable (like for "choice_label") or a property path.

The generated names must be valid form names, i.e. contain alpha-numeric symbols, underscores, hyphens and colons only. They must start with an alpha-numeric symbol or an underscore.

If `null`, an incrementing integer is used as name.

```php
// callable
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => true,
        'No' => false,
        'Maybe' => null,
    ),
    'choices_as_values' => true,
    'choice_name' => function ($choice, $key) {
        // use the labels as names
        return strtolower($key);
    },
));

// property path
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => Status::getInstance(Status::YES),
        'No' => Status::getInstance(Status::NO),
        'Maybe' => Status::getInstance(Status::MAYBE),
    ),
    'choices_as_values' => true,
    'choice_name' => 'value',
));
```

**choice_value**

Returns the string value for each choice. This value is displayed in the "value" attributes and submitted in the POST/PUT requests. Can be a callable (like for "choice_label") or a property path.

If `null`, an incrementing integer is used as value.

```php
// callable
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => true,
        'No' => false,
        'Maybe' => null,
    ),
    'choices_as_values' => true,
    'choice_value' => function ($choice, $key) {
        if (null === $choice) {
            return 'null';
        }

        if (true === $choice) {
            return 'true';
        }

        return 'false';
    },
));

// property path
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => Status::getInstance(Status::YES),
        'No' => Status::getInstance(Status::NO),
        'Maybe' => Status::getInstance(Status::MAYBE),
    ),
    'choices_as_values' => true,
    'choice_value' => 'value',
));
```

**choice_attr**

Returns the additional HTML attributes for choices. Can be an array, a callable (like for "choice_label") or a property path.
If an array, the key of the "choices" array must be used as keys.

```php
// array
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => true,
        'No' => false,
        'Maybe' => null,
    ),
    'choices_as_values' => true,
    'choice_attr' => array(
        'Maybe' => array('class' => 'greyed-out'),
    ),
));

// callable
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => true,
        'No' => false,
        'Maybe' => null,
    ),
    'choices_as_values' => true,
    'choice_attr' => function ($choice, $key) {
        if (null === $choice) {
            return array('class' => 'greyed-out');
        }
    },
));

// property path
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => Status::getInstance(Status::YES),
        'No' => Status::getInstance(Status::NO),
        'Maybe' => Status::getInstance(Status::MAYBE),
    ),
    'choices_as_values' => true,
    'choice_value' => 'htmlAttributes',
));
```

**group_by**

Returns the grouping used for the choices. Can be an array/Traversable, a callable (like for "choice_label") or a property path.

The return values of the callable/property path are used as group labels. If `null` is returned, a choice is not grouped.

If `null`, the structure of the "choices" array is used to construct the groups.

```php
// default
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Decided' => array(
            'Yes' => true,
            'No' => false,
        ),
        'Undecided' => array(
            'Maybe' => null,
        ),
    ),
    'choices_as_values' => true,
));

// callable
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => true,
        'No' => false,
        'Maybe' => null,
    ),
    'choices_as_values' => true,
    'group_by' => function ($choice, $key) {
        if (null === $choice) {
            return 'Undecided';
        }

        return 'Decided';
    },
));

// property path
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => Status::getInstance(Status::YES),
        'No' => Status::getInstance(Status::NO),
        'Maybe' => Status::getInstance(Status::MAYBE),
    ),
    'choices_as_values' => true,
    'group_by' => 'type',
));
```

**preferred_choices**

Returns the preferred choices. Can be an array/Traversable, a callable (like for "choice_label") or a property path.

```php
// array
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => true,
        'No' => false,
        'Maybe' => null,
    ),
    'choices_as_values' => true,
    'preferred_choices' => array(true),
));

// callable
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => true,
        'No' => false,
        'Maybe' => null,
    ),
    'choices_as_values' => true,
    'preferred_choices' => function ($choice, $key) {
        return true === $choice;
    },
));

// property path
$builder->add('attending', 'choice', array(
    'choices' => array(
        'Yes' => Status::getInstance(Status::YES),
        'No' => Status::getInstance(Status::NO),
        'Maybe' => Status::getInstance(Status::MAYBE),
    ),
    'choices_as_values' => true,
    'preferred_choices' => 'preferred',
));
```

**Technical Changes**

To properly implement all this, the old `ChoiceListInterface` class was deprecated and replaced by a new, slimmer one. The creation of choice views is now separated from choice lists. Hence a lot of logic is not executed anymore when processing (but not displaying) a form.

Internally, a `ChoiceListFactoryInterface` implementation is used to construct choice lists and choice views. Two decorators exist for this class:

* `CachingFactoryDecorator`: caches choice lists/views so that multiple fields displaying the same choices (e.g. in collection fields) use the same choice list/view
* `PropertyAccessDecorator`: adds support for property paths to a factory

**BC Breaks**

The option "choice_list" of ChoiceType now contains a `Symfony\Component\Form\ChoiceList\ChoiceListInterface` instance, which is a super-type of the deprecated `ChoiceListInterface`.

**Todos**

- [ ] Adapt CHANGELOGs
- [ ] Adapt UPGRADE files
- [ ] symfony/symfony-docs issue/PR

Commits
-------

94d18e9 [Form] Fixed CS
7e0960d [Form] Fixed failing layout tests
1d89922 [Form] Fixed tests using legacy functionality
d6179c8 [Form] Fixed PR comments
26eba76 [Form] Fixed regression: Choices are compared by their values if a value callback is given
a289deb [Form] Fixed new ArrayChoiceList to compare choices by their values, if enabled
e6739bf [DoctrineBridge] DoctrineType now respects the "query_builder" option when caching the choice loader
3846b37 [DoctrineBridge] Fixed: don't cache choice lists if query builders are constructed dynamically
03efce1 [Form] Refactored choice lists to support dynamic label, value, index and attribute generation
2015-04-01 12:04:55 +02:00
Bernhard Schussek
94d18e961c [Form] Fixed CS 2015-04-01 11:48:14 +02:00
Bernhard Schussek
7e0960d716 [Form] Fixed failing layout tests 2015-04-01 11:48:14 +02:00
Bernhard Schussek
1d89922782 [Form] Fixed tests using legacy functionality 2015-04-01 11:48:11 +02:00
Bernhard Schussek
d6179c830b [Form] Fixed PR comments 2015-04-01 11:47:34 +02:00
Nicolas Grekas
64d6e76e42 [VarDumper] Add casters for Reflection* classes 2015-03-31 21:51:54 +02:00
Nicolas Grekas
b1e2dedf9e feature #14079 [VarDumper] Add and use Caster::PREFIX_* consts (nicolas-grekas)
This PR was merged into the 2.7 branch.

Discussion
----------

[VarDumper] Add and use Caster::PREFIX_* consts

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Will need a rebase on top of #14058 once it is merged

Commits
-------

86cf8de [VarDumper] Make use of Caster::PREFIX_* consts
2015-03-31 17:03:27 +02:00
Nicolas Grekas
86cf8dee5e [VarDumper] Make use of Caster::PREFIX_* consts 2015-03-31 16:41:17 +02:00
Grégoire Pineau
e8d2983d9e [VarDumper] Optimized some code 2015-03-31 15:54:17 +02:00
stloyd
13ec9ffafc Remove dead code from FrameworkExtension & LogoutUrlHelper 2015-03-31 15:19:41 +02:00
Joseph Bielawski
52885f0ade [DoctrineBridge] Add missing variable declaration in testcase 2015-03-31 14:57:19 +02:00
Bernhard Schussek
26eba769b5 [Form] Fixed regression: Choices are compared by their values if a value callback is given 2015-03-31 14:43:48 +02:00
Bernhard Schussek
a289deb973 [Form] Fixed new ArrayChoiceList to compare choices by their values, if enabled 2015-03-31 14:43:48 +02:00
Bernhard Schussek
e6739bf05e [DoctrineBridge] DoctrineType now respects the "query_builder" option when caching the choice loader 2015-03-31 14:43:48 +02:00
Bernhard Schussek
3846b3750a [DoctrineBridge] Fixed: don't cache choice lists if query builders are constructed dynamically 2015-03-31 14:43:48 +02:00
Bernhard Schussek
03efce1b56 [Form] Refactored choice lists to support dynamic label, value, index and attribute generation 2015-03-31 14:43:48 +02:00
Xavier Leune
94d3876c4c FIX #13919 added TranslationsCacheWarmer to generate catalogues at warmup 2015-03-31 14:07:52 +02:00
Nicolas Grekas
75c8a2ba21 minor #14122 [VarDumper] Fix tests typo (ogizanagi)
This PR was merged into the 2.7 branch.

Discussion
----------

[VarDumper] Fix tests typo

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ✘
| License       | MIT
| Doc PR        | ✘

I guess there is a typo here, Travis reported (php >=5.6, see https://travis-ci.org/symfony/symfony/jobs/56527757 for instance):
> 1) Symfony\Component\VarDumper\Tests\CliDumperTest::testSpecialVars56
Undefined variable: out
/home/travis/build/symfony/symfony/vendor/symfony/phpunit-bridge/Symfony/Bridge/PhpUnit/DeprecationErrorHandler.php:38
/home/travis/build/symfony/symfony/src/Symfony/Component/VarDumper/Tests/CliDumperTest.php:218

Commits
-------

c5f39aa [VarDumper] CliDumper: fix test typo
2015-03-31 10:27:26 +02:00
Nicolas Grekas
a86a41940a Merge branch '2.6' into 2.7
* 2.6:
  [VarDumper] Fix dumping references as properties
  [VarDumper] Fix toggle action to see source excerpt
2015-03-31 10:26:01 +02:00
Fabien Potencier
82400f8427 bug #14126 [VarDumper] Fix toggle action to see source excerpt (nicolas-grekas)
This PR was merged into the 2.6 branch.

Discussion
----------

[VarDumper] Fix toggle action to see source excerpt

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

A pure JavaScript fix

Commits
-------

10f7133 [VarDumper] Fix toggle action to see source excerpt
2015-03-31 10:16:37 +02:00
Fabien Potencier
29e153ebdf bug #14114 [VarDumper] Fix dumping references as properties (nicolas-grekas)
This PR was merged into the 2.6 branch.

Discussion
----------

[VarDumper] Fix dumping references as properties

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Just discovered this while reviewing an other PR.
Using `array_combine()` preserves references now.

Commits
-------

6c6560e [VarDumper] Fix dumping references as properties
2015-03-31 10:15:34 +02:00
Nicolas Grekas
6c6560e5f5 [VarDumper] Fix dumping references as properties 2015-03-31 10:12:29 +02:00
Nicolas Grekas
10f713385e [VarDumper] Fix toggle action to see source excerpt 2015-03-31 10:08:51 +02:00
Hugo Hamon
5d96f4dbd7 [FrameworkBundle] added a protected shortcut getParameter() method in the base Controller class. 2015-03-31 09:47:41 +02:00
ogizanagi
c5f39aa32f [VarDumper] CliDumper: fix test typo 2015-03-31 08:02:47 +02:00
Fabien Potencier
6ef12044f7 fixed typo 2015-03-30 17:59:31 +02:00
Fabien Potencier
d5c873cf5a Merge branch '2.6' into 2.7
* 2.6:
  [Validator] Add missing pt_BR translations
  Add parsing of hexadecimal strings for PHP 7
  [Configuration] improve description for ignoreExtraKeys on ArrayNodeDefinition
  [Validator] Added missing Hungarian translation
  [Validator] Fixed grammar in Hungarian translation
  CS: Unary operators should be placed adjacent to their operands
  CS: Binary operators should be arounded by at least one space
  remove useless tests that fail in php 7
  [Translator] fix test for php 7 compatibility
  Update phpdoc of ProcessBuilder#setPrefix()

Conflicts:
	src/Symfony/Bridge/Propel1/Logger/PropelLogger.php
	src/Symfony/Component/Validator/Resources/translations/validators.hu.xlf
2015-03-30 17:55:07 +02:00
Fabien Potencier
2c4b5e5bbe Merge branch '2.3' into 2.6
* 2.3:
  [Validator] Add missing pt_BR translations
  Add parsing of hexadecimal strings for PHP 7
  [Configuration] improve description for ignoreExtraKeys on ArrayNodeDefinition
  [Validator] Added missing Hungarian translation
  [Validator] Fixed grammar in Hungarian translation
  CS: Unary operators should be placed adjacent to their operands
  CS: Binary operators should be arounded by at least one space
  remove useless tests that fail in php 7
  [Translator] fix test for php 7 compatibility
  Update phpdoc of ProcessBuilder#setPrefix()

Conflicts:
	src/Symfony/Component/HttpFoundation/Session/Attribute/NamespacedAttributeBag.php
	src/Symfony/Component/PropertyAccess/PropertyAccessor.php
	src/Symfony/Component/Validator/Resources/translations/validators.pt_BR.xlf
	src/Symfony/Component/Yaml/Parser.php
2015-03-30 17:54:10 +02:00
Fabien Potencier
a8e2c743c2 feature #14057 [RFC][Console] Added console style guide helpers (v2) (kbond)
This PR was squashed before being merged into the 2.7 branch (closes #14057).

Discussion
----------

[RFC][Console] Added console style guide helpers (v2)

*(Rebased to 2.7)*

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #12014, #12035, symfony/symfony-docs#4265
| License       | MIT
| Doc PR        | todo

## Proposed API

### Code

```php
// Symfony command
protected function execute(InputInterface $input, OutputInterface $output)
{
    $output = new SymfonyStyle($output);

    $output->title('Lorem Ipsum Dolor Sit Amet');
    $output->text(array(
        'Duis aute irure dolor in reprehenderit in voluptate velit esse',
        'cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat'
    ));
    $output->ln();

    $output->table(array('Name', 'Method', 'Scheme', 'Host', 'Path'), array(
            array('admin_post_new', 'ANY', 'ANY', 'ANY', '/admin/post/new'),
            array('admin_post_show', 'GET', 'ANY', 'ANY', '/admin/post/{id}'),
            array('admin_post_edit', 'ANY', 'ANY', 'ANY', '/admin/post/{id}/edit'),
            array('admin_post_delete', 'DELETE', 'ANY', 'ANY', '/admin/post/{id}'),
        ));

    $output->caution(array(
            'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.',
            'foo'
        ));
    $output->section('Consectetur Adipisicing Elit Sed Do Eiusmod');
    $output->listing(array(
        'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod, tempor incididunt ut labore et dolore magna aliqua.',
        'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.',
        'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
    ));

    $customValidator = function ($value) {
        if ($value == 'foo') {
            throw new \Exception('cannot be foo');
        }

        return $value;
    };

    // hidden question
    $output->note($output->askHidden('Hidden question'));

    // choice questions
    $output->note($output->choice('Choice question no default', array('choice1', 'choice2')));
    $output->note($output->choice('Choice question with default', array('choice1', 'choice2'), 'choice1'));

    // confirmation questions
    $output->note($output->confirm('Confirmation with yes default', true) ? 'yes' : 'no');
    $output->note($output->confirm('Confirmation with no default', false) ? 'yes' : 'no');

    // standard questions
    $output->note($output->ask('Question no default'));
    $output->note($output->ask('Question no default and custom validator', null, $customValidator));
    $output->note($output->ask('Question with default', 'default'));
    $output->note($output->ask('Question with default and custom validator', 'default', $customValidator));

    $output->note('Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat.');
    $output->success('Lorem ipsum dolor sit amet, consectetur adipisicing elit');
    $output->error('Duis aute irure dolor in reprehenderit in voluptate velit esse.');
    $output->warning('Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi.');

    $output->progressStart(100);

    for ($i = 0; $i < 100; $i++) {
        usleep(10000);
        $output->progressAdvance();
    }

    $output->progressFinish();
}
```

### Output

```
$ php app/console command

Lorem Ipsum Dolor Sit Amet
==========================

 // Duis aute irure dolor in reprehenderit in voluptate velit esse
 // cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat

 ------------------- -------- -------- ------ -----------------------
  Name                Method   Scheme   Host   Path
 ------------------- -------- -------- ------ -----------------------
  admin_post_new      ANY      ANY      ANY    /admin/post/new
  admin_post_show     GET      ANY      ANY    /admin/post/{id}
  admin_post_edit     ANY      ANY      ANY    /admin/post/{id}/edit
  admin_post_delete   DELETE   ANY      ANY    /admin/post/{id}
 ------------------- -------- -------- ------ -----------------------

 ! [CAUTION] Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
 ! dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris. Lorem ipsum dolor sit amet,
 ! consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
 ! veniam, quis nostrud exercitation ullamco laboris.
 !
 ! foo

Consectetur Adipisicing Elit Sed Do Eiusmod
-------------------------------------------

 * Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod, tempor incididunt ut labore et dolore magna aliqua.

 * Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.

 * Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Hidden question:
 > <f><o><o><enter>

 ! [NOTE] foo

 Choice question no default:
  [0] choice1
  [1] choice2
 > <enter>

 [ERROR] Value "" is invalid

 Choice question no default:
  [0] choice1
  [1] choice2
 > 0<enter>

 ! [NOTE] choice1

 Choice question with default [choice1]:
  [0] choice1
  [1] choice2
 > 1<enter>

 ! [NOTE] choice2

 Confirmation with yes default (yes/no) [yes]:
 > <enter>

 ! [NOTE] yes

 Confirmation with no default (yes/no) [no]:
 > <enter>

 ! [NOTE] no

 Question no default:
 > <enter>

 [ERROR] A value is required.

 Question no default:
 > foo<enter>

 ! [NOTE] foo

 Question no default and custom validator:
 > foo<enter>

 [ERROR] cannot be foo

 Question no default and custom validator:
 > <enter>

 [ERROR] A value is required.

 Question no default and custom validator:
 > foo<enter>

 [ERROR] cannot be foo

 Question no default and custom validator:
 > bar<enter>

 ! [NOTE] bar

 Question with default [default]:
 > <enter>

 ! [NOTE] default

 Question with default and custom validator [default]:
 > <enter>

 ! [NOTE] default

 ! [NOTE] Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
 ! Excepteur sint occaecat cupidatat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
 ! fugiat nulla pariatur. Excepteur sint occaecat cupidatat. Duis aute irure dolor in reprehenderit in voluptate velit
 ! esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat.

 [OK] Lorem ipsum dolor sit amet, consectetur adipisicing elit

 [ERROR] Duis aute irure dolor in reprehenderit in voluptate velit esse.

 [WARNING] Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi.

 100/100 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%

```

### Screenshots

![screen1](https://cloud.githubusercontent.com/assets/127811/4507077/53bc009c-4b09-11e4-937c-44fe7fe30dc0.png)

![screen2](https://cloud.githubusercontent.com/assets/127811/4507078/53bf982e-4b09-11e4-8b5a-8c44c20ae4d9.png)

![screen](https://cloud.githubusercontent.com/assets/127811/6848451/b2e64848-d3a3-11e4-9916-43bd377684ca.png)

Commits
-------

96b4210 [RFC][Console] Added console style guide helpers (v2)
2015-03-30 17:51:05 +02:00
Kevin Bond
96b4210de5 [RFC][Console] Added console style guide helpers (v2) 2015-03-30 17:51:02 +02:00
Fabien Potencier
9215c222ff minor #14101 [Configuration] improve description for ignoreExtraKeys on ArrayNodeDefinition (cordoval)
This PR was merged into the 2.3 branch.

Discussion
----------

[Configuration] improve description for ignoreExtraKeys on ArrayNodeDefinition

|Q            |A  |
|---          |---|
|Bug Fix?     |y  |
|New Feature? |n  |
|BC Breaks?   |n  |
|Deprecations?|n  |
|Tests Pass?  |y  |
|Fixed Tickets| #13957  |
|License      |MIT|
|Doc PR       |   |

Commits
-------

b735022 [Configuration] improve description for ignoreExtraKeys on ArrayNodeDefinition
2015-03-30 17:47:26 +02:00
Fabien Potencier
ac5c5a5fd2 feature #14077 [VarDumper] Add VarDumperTestCase and related trait (nicolas-grekas)
This PR was merged into the 2.7 branch.

Discussion
----------

[VarDumper] Add VarDumperTestCase and related trait

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

This allows writing assertions that use the dump of a variable for comparison.

Commits
-------

57da9ae [VarDumper] Add VarDumperTestCase and related trait
2015-03-30 17:41:11 +02:00
Fabien Potencier
bdb50965f0 feature #14058 [VarDumper] Add filters to casters (nicolas-grekas)
This PR was merged into the 2.7 branch.

Discussion
----------

[VarDumper] Add filters to casters

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Commits
-------

84a80d1 [VarDumper] Add filters to casters
2015-03-30 17:39:35 +02:00
Fabien Potencier
2d9cc133ff minor #14090 CS: Unary operators should be placed adjacent to their operands (keradus)
This PR was merged into the 2.3 branch.

Discussion
----------

CS: Unary operators should be placed adjacent to their operands

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | ?
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

Update before upcoming changes on PHP CS Fixer 1.7

To keep fabbot.io happy ;)

Commits
-------

2367f4a CS: Unary operators should be placed adjacent to their operands
2015-03-30 17:33:35 +02:00
Fabien Potencier
6e91981549 minor #14089 CS: Binary operators should be arounded by at least one space (keradus)
This PR was merged into the 2.3 branch.

Discussion
----------

CS: Binary operators should be arounded by at least one space

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | ?
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

Update before upcoming changes on PHP CS Fixer 1.7

To keep fabbot.io happy ;)

Commits
-------

ec2cec6 CS: Binary operators should be arounded by at least one space
2015-03-30 17:29:33 +02:00
Fabien Potencier
2533d8fe7b feature #14003 [2.7][Translation][Profiler] Added a Translation profiler. (aitboudad)
This PR was merged into the 2.7 branch.

Discussion
----------

[2.7][Translation][Profiler] Added a Translation profiler.

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Fixed tickets  | ~
| Tests pass?   | yes
| License       | MIT

- [x] tests

![selection_005](https://cloud.githubusercontent.com/assets/1753742/6762405/7e355396-cf57-11e4-9836-cdaebb541d13.png)

![selection_006](https://cloud.githubusercontent.com/assets/1753742/6762407/91dc9422-cf57-11e4-8f6f-f89c9d067b03.png)

Commits
-------

c923b2a [Translation][Profiler] Added a Translation profiler.
2015-03-30 17:25:15 +02:00
Andreia Bohner
d748374c5c [Validator] Add missing pt_BR translations 2015-03-30 17:07:31 +02:00
Fabien Potencier
a49c4328e8 minor #14103 [PhpunitBridge] Trim final stop from deprecation message (WouterJ)
This PR was merged into the 2.7 branch.

Discussion
----------

[PhpunitBridge] Trim final stop from deprecation message

**Before**
```
The "_method" requirement is deprecated since version 2.2 and will be removed in 3.0. Use the
setMethods() method instead or the "methods" option in the route definition.: 18x
```

**After**
```
The "_method" requirement is deprecated since version 2.2 and will be removed in 3.0. Use the
setMethods() method instead or the "methods" option in the route definition: 18x
```

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Commits
-------

98f3ba9 Trim final stop from deprecation message
2015-03-30 16:55:02 +02:00
Abdellatif Ait boudad
c923b2ab88 [Translation][Profiler] Added a Translation profiler. 2015-03-30 11:48:49 +01:00
Nicolas Grekas
007386c5f2 Merge branch '2.6' into 2.7
* 2.6:
  remove usage of deprecated class

Conflicts:
	src/Symfony/Bridge/Twig/composer.json
2015-03-30 10:18:42 +02:00
Christophe Coevoet
e848040e9e Add parsing of hexadecimal strings for PHP 7
PHP 7 does not handle the hexadecimal notation in is_numeric checks
anymore, so the detection needs to be implemented explicitly.
2015-03-30 09:42:01 +02:00
Nicolas Grekas
84a80d18c4 [VarDumper] Add filters to casters 2015-03-29 18:11:21 +02:00
Wouter J
98f3ba9ede Trim final stop from deprecation message 2015-03-29 12:32:48 +02:00
Fabien Potencier
4f25914842 minor #14099 [Validator] Added missing Hungarian translation (1ed)
This PR was merged into the 2.3 branch.

Discussion
----------

[Validator] Added missing Hungarian translation

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Commits
-------

933a449 [Validator] Added missing Hungarian translation
2015-03-29 11:46:31 +02:00
Fabien Potencier
32dc1cdd5f minor #14087 [Translator] fix test for php 7 compatibility (Tobion)
This PR was merged into the 2.3 branch.

Discussion
----------

[Translator] fix test for php 7 compatibility

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #14086 for Translation component
| License       | MIT
| Doc PR        | -

Commits
-------

02b829f [Translator] fix test for php 7 compatibility
2015-03-29 11:45:38 +02:00
Fabien Potencier
bcbf92900c minor #14098 [Validator] Fixed grammar in Hungarian translation (1ed)
This PR was merged into the 2.3 branch.

Discussion
----------

[Validator] Fixed grammar in Hungarian translation

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Corrected translation coming from https://github.com/symfony/symfony/pull/11778

Commits
-------

5f133b3 [Validator] Fixed grammar in Hungarian translation
2015-03-29 11:43:58 +02:00
Luis Cordova
b73502241a [Configuration] improve description for ignoreExtraKeys on ArrayNodeDefinition 2015-03-29 02:02:40 -05:00
Gábor Egyed
c89b41908f [Validator] Added missing Hungarian translation 2015-03-28 19:44:20 +01:00
Gábor Egyed
933a449be7 [Validator] Added missing Hungarian translation 2015-03-28 19:25:46 +01:00
Gábor Egyed
5f133b3903 [Validator] Fixed grammar in Hungarian translation 2015-03-28 18:46:14 +01:00
Christian Flothmann
24a9d66d87 remove usage of deprecated class 2015-03-28 17:22:38 +01:00
Dariusz Ruminski
2367f4a5a2 CS: Unary operators should be placed adjacent to their operands 2015-03-27 23:12:40 +01:00
Dariusz Ruminski
ec2cec6fd8 CS: Binary operators should be arounded by at least one space 2015-03-27 23:05:05 +01:00
Tobias Schultze
59cab272e1 remove useless tests that fail in php 7 2015-03-27 22:21:56 +01:00
Tobias Schultze
02b829f973 [Translator] fix test for php 7 compatibility 2015-03-27 19:29:16 +01:00
Nicolas Grekas
57da9aeadf [VarDumper] Add VarDumperTestCase and related trait 2015-03-27 19:27:11 +01:00
Nicolas Grekas
d23b38ae7f Fix merge 2015-03-27 19:18:01 +01:00
Nicolas Grekas
a41abf3d8f Merge branch '2.6' into 2.7
* 2.6:
  Fix merge
  [VarDumper] Fix dumping ThrowingCasterException

Conflicts:
	src/Symfony/Component/VarDumper/Tests/CliDumperTest.php
2015-03-27 19:07:56 +01:00
Nicolas Grekas
e5611d25dd Fix merge 2015-03-27 19:02:17 +01:00
Fabien Potencier
0b1f17206c minor #13829 [Process] prefix should not be escaped (pyrech)
This PR was merged into the 2.3 branch.

Discussion
----------

[Process] prefix should not be escaped

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #12826
| License       | MIT
| Doc PR        | -

The phpdoc of `ProcessBuilder#setPrefix` says:

```
Adds an unescaped prefix to the command string.
```
But in the current implementation, the prefix is merged with arguments array and then is escaped which seems wrong.

Commits
-------

67f65c9 Update phpdoc of ProcessBuilder#setPrefix()
2015-03-27 16:19:08 +01:00
Loïck Piera
67f65c9fe4 Update phpdoc of ProcessBuilder#setPrefix() 2015-03-27 16:14:25 +01:00
Fabien Potencier
aea7b93a94 bug #14074 [VarDumper] Fix dumping ThrowingCasterException (nicolas-grekas)
This PR was merged into the 2.6 branch.

Discussion
----------

[VarDumper] Fix dumping ThrowingCasterException

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

This cleans up dumping ThrowingCasterException to what I really intended to dump since the beginning.

Commits
-------

9944589 [VarDumper] Fix dumping ThrowingCasterException
2015-03-27 13:12:20 +01:00
Fabien Potencier
8bee26f27a bug #14061 [WebProfilerBundle] Fixed collapsed profiler menu icons (1ed)
This PR was merged into the 2.7 branch.

Discussion
----------

[WebProfilerBundle] Fixed collapsed profiler menu icons

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Added missing CSS and JS modifications from #13463

Commits
-------

51223d2 [WebProfilerBundle] Fixed collapsed profiler menu icons
2015-03-27 13:08:23 +01:00
Fabien Potencier
eccfbe35a4 Merge branch '2.6' into 2.7
* 2.6:
  CS: fixes
  Translator component has default domain for null implemented no need to have default translation domain logic in 3 different places
  [Form] [TwigBridge] Bootstrap layout whitespace control
  [travis] Kill tests when a new commit has been pushed
  fixed CS
  Change behavior to mirror hash_equals() returning early if there is a length mismatch
  CS fixing
  Prevent modifying secrets as much as possible
  Update StringUtils.php
  Whitespace
  Update StringUtils.php
  StringUtils::equals() arguments in RememberMe Cookie based implementation are confused
  CS: general fixes
  [SecurityBundle] removed a duplicated service definition and simplified others.

Conflicts:
	src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml
2015-03-27 11:22:45 +01:00
Fabien Potencier
33abe5c6d6 Merge branch '2.3' into 2.6
* 2.3:
  CS: fixes
  Translator component has default domain for null implemented no need to have default translation domain logic in 3 different places
  [travis] Kill tests when a new commit has been pushed
  fixed CS
  Change behavior to mirror hash_equals() returning early if there is a length mismatch
  CS fixing
  Prevent modifying secrets as much as possible
  Update StringUtils.php
  Whitespace
  Update StringUtils.php
  CS: general fixes
  [SecurityBundle] removed a duplicated service definition and simplified others.

Conflicts:
	src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/choice_widget_collapsed.html.php
	src/Symfony/Bundle/SecurityBundle/Resources/config/security_rememberme.xml
	src/Symfony/Component/Console/Tests/Helper/LegacyTableHelperTest.php
	src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services11.php
2015-03-27 11:19:51 +01:00
Dariusz Ruminski
11e3a9e4e5 CS: fixes 2015-03-27 10:02:23 +01:00
Fabien Potencier
b910e0621a feature #14002 [Translation][Extractor] Allow extracting an array of files besides extracting a directory (marcosdsanchez)
This PR was squashed before being merged into the 2.7 branch (closes #14002).

Discussion
----------

[Translation][Extractor] Allow extracting an array of files besides extracting a directory

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | N/A
| License       | MIT
| Doc PR        | N/A

Give ability to extractors to extract from an array of files a file, or a Traversable besides a directory.

The following commit adds the new feature to the following extractors:
PhpExtractor and TwigExtractor.
It also corrects the interface documentation to show the new options allowed as a parameter.

I found this change useful as I've got a custom translation:update command that instead of extracting from $rootPath. '/Resources/views/' it extracts from the files that git is showing as modified. The command usually runs much faster than the default as it only parses the needed files.

Commits
-------

9d6596c [Translation][Extractor] Allow extracting an array of files besides extracting a directory
2015-03-27 07:53:17 +01:00
Marcos Sánchez
9d6596c69b [Translation][Extractor] Allow extracting an array of files besides extracting a directory 2015-03-27 07:53:09 +01:00
Nicolas Grekas
9944589068 [VarDumper] Fix dumping ThrowingCasterException 2015-03-26 18:20:25 +01:00
Fabien Potencier
350f30b0e1 feature #13438 [Console][Table] Add support for colspan/rowspan + multiple header lines (aitboudad)
This PR was squashed before being merged into the 2.7 branch (closes #13438).

Discussion
----------

[Console][Table] Add support for colspan/rowspan + multiple header lines

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Fixed tickets  | #13368, #13369
| Tests pass?   | yes
| License       | MIT

This PR introduce a new feature described in #13368 and #13369,
I created a new class ```TableCell``` which can allow us to specify colspan/rowspan for each cell.
```php
$table->addRow([new TableCell("data", array('rowspan' => 1, 'colspan' => 2)), 'data']);
```

- [x] #13368 Add support for colspan/rowspan
- [x] #13369 Add support for multiple header lines
- [ ] add doc

Commits
-------

ed18767 [Console][Table] Add support for colspan/rowspan + multiple header lines
2015-03-26 17:59:59 +01:00
Abdellatif Ait boudad
ed18767fbe [Console][Table] Add support for colspan/rowspan + multiple header lines 2015-03-26 17:59:57 +01:00
Tobias Schultze
ccd32d5995 Translator component has default domain for null implemented
no need to have default translation domain logic in 3 different places
2015-03-26 14:42:51 +01:00
Matthieu Auger
a5628bdbe2 Displays friendly message if the event does not have any registered listeners 2015-03-26 13:59:20 +01:00
Fabien Potencier
8f1b757559 feature #14071 [VarDumper] Ctrl+click toggles-all and fix IE8 support (larsborn, nicolas-grekas)
This PR was merged into the 2.7 branch.

Discussion
----------

 	[VarDumper] Ctrl+click toggles-all and fix IE8 support

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #12757, #12612
| License       | MIT
| Doc PR        | -

I choose Ctrl+click instead of the initial Alt+click because after testing both on Windows and Ubuntu, Alt+click is bound by the Browser/OS for other things. Ctrl+click is OK.

Commits
-------

70f1f24 [VarDumper] Ctrl+click toggles-all and fix IE8 support
12c1feb [VarDumper] implement expand all on ALT+click
2015-03-26 13:55:48 +01:00
Nicolas Grekas
70f1f24fd0 [VarDumper] Ctrl+click toggles-all and fix IE8 support 2015-03-26 13:50:53 +01:00
Fabien Potencier
1ba939f2e6 minor #13482 Implemented check on interface implementation (jaytaph)
This PR was squashed before being merged into the 2.7 branch (closes #13482).

Discussion
----------

Implemented check on interface implementation

| Q             | A
| ------------- | ---
| Bug fix?      | Yes
| New feature?  | No
| BC breaks?    | No
| Deprecations? | No
| Tests pass?   | Yes
| Fixed tickets | #13480
| License       | MIT
| Doc PR        |

Commits
-------

2a79ace Implemented check on interface implementation
2015-03-26 13:47:28 +01:00
Joshua Thijssen
2a79ace826 Implemented check on interface implementation 2015-03-26 13:47:14 +01:00
Fabien Potencier
2981d01baa bug #12948 [Form] [TwigBridge] Bootstrap layout whitespace control (mvar)
This PR was squashed before being merged into the 2.6 branch (closes #12948).

Discussion
----------

[Form] [TwigBridge] Bootstrap layout whitespace control

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

While working with Symfony's Bootstrap layout I have found few minor issues:

- [x] Choice labels are rendered with extra spaces
- [x] Whitespace control for all form widgets (like in default layout)

What was done:
- All failing tests from `AbstractLayoutTest` were copied to `AbstractBootstrap3LayoutTest` and adapted for Bootstrap layout. One of the main fixes was to change class checking for input (e.g., Bootstrap requires "form-control").
- Removed  `&nbsp;` and hardcoded space before error message. Spacing here should be handled with CSS.
- Trimmed all unnecessary spaces from widget blocks (whitespace control)

Commits
-------

e8b0678 [Form] [TwigBridge] Bootstrap layout whitespace control
2015-03-26 12:16:49 +01:00
Mantas Varatiejus
e8b06787b0 [Form] [TwigBridge] Bootstrap layout whitespace control 2015-03-26 12:16:40 +01:00
Grégoire Pineau
bebca0b1b1 |Validator] Add PHPUnit hint in AbstractConstraintValidatorTest
When one extends AbstractConstraintValidatorTest, If test fails
the output is not very easy to understand because all "magic"
is done in the parent class. So we have to read the code of the
parent class to understand what happened.
2015-03-26 10:49:35 +01:00
larsborn
12c1febd11 [VarDumper] implement expand all on ALT+click 2015-03-26 08:47:01 +01:00
Gábor Egyed
51223d28c6 [WebProfilerBundle] Fixed collapsed profiler menu icons 2015-03-25 22:46:51 +01:00
Fabien Potencier
c1c648e3d9 minor #14031 [2.3] [SecurityBundle] removed a duplicated service definition and simplified others. (hhamon)
This PR was merged into the 2.3 branch.

Discussion
----------

[2.3] [SecurityBundle] removed a duplicated service definition and simplified others.

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | ~

Commits
-------

f24c8ab [SecurityBundle] removed a duplicated service definition and simplified others.
2015-03-25 20:42:31 +01:00