Commit Graph

47682 Commits

Author SHA1 Message Date
Christian Flothmann ce73b98e2c add alpha3 option to Language constraint 2020-02-24 15:47:52 +01:00
Nicolas Grekas b3b368b800 minor #35808 [HttpFoundation] Fixed Mime dependency missing error (HeahDude)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[HttpFoundation] Fixed Mime dependency missing error

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | kinda
| New feature?  | no
| Deprecations? | no
| Tickets       | ~
| License       | MIT
| Doc PR        | ~

Follows #35642, by adding a missing exception and a note in the UPGRADE file (CHANGELOG in HttpFoundation was already up to date).
Reported in symfony/symfony-docs#1307

Commits
-------

fef0de3eb6 [HttpFoundation] Fixed Mimes dependency missing error
2020-02-23 10:28:35 +01:00
Fabien Potencier 269c4a2e15 feature #30994 [Form] Added support for caching choice lists based on options (HeahDude)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[Form] Added support for caching choice lists based on options

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | ~
| License       | MIT
| Doc PR        | symfony/symfony-docs#13182

Currently, the `CachingFactoryDecorator` is responsible for unnecessary memory usage, anytime a choice option is set with a callback option defined as an anonymous function or a loader, then a new hash is generated for the choice list, while we may expect the list to be reused once "finally" configured in a form type or choice type extension.

A simple case is when using one of the core intl choice types in a collection:
```php
// ...
class SomeFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('some_choices', ChoiceType::class, [
                // before: cached choice list (unnecessary overhead)
                // after: no cache (better perf)
                'choices' => $someObjects,
                'choice_value' => function (?object $choice) { /* return some string */ },
            ])

            // see below the nested effects
            ->add('nested_fields', CollectionType::class, [
                'entry_type' => NestedFormType::class,
            ])
    // ...
}

// ...
class NestedFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            // ...
            ->add('some_other_choices', ChoiceType::class, [
                // before: cached choice list for every entry because we define a new closure instance for each field
                // after: no cache, a bit better for the same result, but much better if it were not nested in a collection
                'choices' => $someOtherObjects,
                'choice_value' => function (?object $otherChoice) { /* return some string */ },
            ])

            ->add('some_loaded_choices', ChoiceType::class, [
                // before: cached but for every entry since every field will have its
                //         own instance of loader, generating a new hash
                // after: no cache, same pro/cons as above
                'choice_loader' => new CallbackChoiceLoader(function() { /* return some choices */}),
                // or
                'choice_loader' => new SomeLoader(),
            ])

            ->add('person', EntityType::class, [
                // before: cached but for every entry, because we define extra `choice_*` option
                // after: no cache, same pro/cons as above
                'class' => SomeEntity::class,
                'choice_label' => function (?SomeEntity $choice) { /* return some label */},
            ])

            // before: cached for every entry, because the type define some "choice_*" option
            // after: cached only once, better perf since the same loader is used for every entry
            ->add('country', CountryType::class)

            // before: cached for every entry, because the type define some "choice_*" option
            // after: no cache, same pro/cons as above
            ->add('locale', LocaleType::class, [
                'preferred_choices' => [ /* some preferred locales */ ],
                'group_by' => function (?string $locale, $label) { /* return some group */ },
            ])
// ...
```

In such cases, we would expect every entries to use the same cached intl choice list, but not, as many list and views as entries will be kept in cache. This is even worse if some callback options like `choice_label`, `choice_value`, `choice_attr`, `choice_name`, `preferred_choices` or `group_by` are used.
This PR helps making cache explicit when needed and ~deprecate~ drop unexpected implicit caching of choice list for most simple cases responsible of unnecessary overhead.

The result is better performance just by upgrading to 5.1 \o/.
But to solve the cases above when cache is needed per options, one should now use the new `ChoiceList` static methods to wrap option values, which is already done internally in this PR.

```php
use Symfony\Component\Form\ChoiceList\ChoiceList;
// ...
class NestedFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            // explicitly shared cached choice lists between entries

            ->add('some_other_choices', ChoiceType::class, [
                'choices' => $someOtherObjects,
                'choice_value' => ChoiceList::value($this, function (?object $otherChoice) {
                    /* return some string */
                }),
            ]),

            ->add('some_loaded_choices', ChoiceType::class, [
                'choice_loader' => ChoiceList::lazy($this, function() {
                    /* return some choices */
                })),
                // or
                'choice_loader' => ChoiceList::loader($this, new SomeLoader()),
            ]),

            ->add('person', EntityType::class, [
                'class' => SomeEntity::class,
                'choice_label' => ChoiceList::label($this, function (?SomeEntity $choice) {
                    /* return some label */
                },
            ])

            // nothing to do :)
            ->add('country', CountryType::class)

            ->add('locale', LocaleType::class, [
                'preferred_choices' => ChoiceList::preferred($this, [ /* some preferred locales */ ]),
                'group_by' => ChoiceList::groupBy($this, function (?string $locale, $label) {
                    /* return some group */
                }),
            ])
// ...
```

I've done some nice profiling with Blackfire and the simple example above in a fresh website skeleton and only two empty entries as initial data, then submitting an empty form. That gives the following results:

 * Rendering the form - Before vs After

  <img width="714" alt="Screenshot 2020-02-16 at 9 24 58 PM" src="https://user-images.githubusercontent.com/10107633/74612132-de533180-5102-11ea-9cc4-296a16949d90.png">

 * Rendering the form - Before vs After with `ChoiceList` helpers

  <img width="670" alt="Screenshot 2020-02-16 at 9 26 51 PM" src="https://user-images.githubusercontent.com/10107633/74612155-122e5700-5103-11ea-9c16-5d80a7541f4b.png">

 * Submitting the form - Before vs After

  <img width="670" alt="Screenshot 2020-02-16 at 9 28 01 PM" src="https://user-images.githubusercontent.com/10107633/74612172-3be77e00-5103-11ea-9a18-4294e05402d2.png">

 * Submitting the form - Before vs After with `ChoiceList` helpers

  <img width="670" alt="Screenshot 2020-02-16 at 9 29 10 PM" src="https://user-images.githubusercontent.com/10107633/74612193-689b9580-5103-11ea-86b9-5b4906200021.png">

_________

TODO:
- [x] Docs
- [x] More profiling
- [x] Add some tests

#EUFOSSA

Commits
-------

b25973cc2e [Form] Added support for caching choice lists based on options
2020-02-21 08:55:09 +01:00
Fabien Potencier f01bbc789c feature #35783 [Validator] Add the divisibleBy option to the Count constraint (fancyweb)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[Validator] Add the divisibleBy option to the Count constraint

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | TODO

From my experience, it is sometimes useful to assert that the number of elements in a collection is a multiple of X.

Commits
-------

8dfb7b2ad1 [Validator] Add the divisibleBy option to the Count constraint
2020-02-21 08:45:55 +01:00
Fabien Potencier d33a483575 feature #35649 [String] Allow to keep the last word when truncating a text (franmomu)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[String] Allow to keep the last word when truncating a text

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | Fix #35567
| License       | MIT
| Doc PR        | -

The [truncate filter from twig/extensions](https://github.com/twigphp/Twig-extensions/blob/master/src/TextExtension.php#L36) has a `preserve` parameter to preserve whole words.

Since `twig/extensions` is deprecated and its alternative for `truncate` filter is the use of `u` filter, this PR adds preverse word functionality.

Commits
-------

1cfaeec378 [String] Allow to keep the last word when truncating a text
2020-02-21 08:43:56 +01:00
Jules Pietri fef0de3eb6
[HttpFoundation] Fixed Mimes dependency missing error 2020-02-20 20:55:19 +01:00
Thomas Calvet 8dfb7b2ad1 [Validator] Add the divisibleBy option to the Count constraint 2020-02-19 17:59:38 +01:00
Fran Moreno 1cfaeec378 [String] Allow to keep the last word when truncating a text 2020-02-18 21:59:15 +01:00
Fabien Potencier cde44fcad1 minor #35768 Add the bug label automatically when using the bug issue template (stof)
This PR was merged into the 5.1-dev branch.

Discussion
----------

Add the bug label automatically when using the bug issue template

| Q             | A
| ------------- | ---
| Branch?       | master (default branch)
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | n/a
| License       | MIT
| Doc PR        | n/a

Commits
-------

f2f9ee5466 Add the bug label automatically when using the bug issue template
2020-02-18 11:02:27 +01:00
Christophe Coevoet f2f9ee5466
Add the bug label automatically when using the bug issue template 2020-02-18 10:35:58 +01:00
Fabien Potencier baf4245203 bug #35764 [Messenger] Add missing return in AmazonSqsReceiver::getMessageCount (mynameisbogdan)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[Messenger] Add missing return in AmazonSqsReceiver::getMessageCount

| Q             | A
| ------------- | ---
| Branch?       | master <!-- see below -->
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| License       | MIT

Commits
-------

7042ff86ec [Messenger] Add missing return in AmazonSqsReceiver::getMessageCount
2020-02-18 09:08:26 +01:00
Bogdan 7042ff86ec [Messenger] Add missing return in AmazonSqsReceiver::getMessageCount 2020-02-18 02:58:50 +02:00
Fabien Potencier 2b68d53526 feature #34654 [Notifier] added Sinch texter transport (imiroslavov)
This PR was squashed before being merged into the 5.1-dev branch.

Discussion
----------

[Notifier] added Sinch texter transport

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | n/a
| License       | MIT
| Doc PR        | n/a

This PR adds adapter for Sinch messaging gateway to the texter transport.

Example configuration:
`sinch://SID:TOKEN@default?from=PHONE`

Commits
-------

db6d360be8 [Notifier] added Sinch texter transport
2020-02-17 17:10:34 +01:00
Iliya Miroslavov Iliev db6d360be8 [Notifier] added Sinch texter transport 2020-02-17 17:10:29 +01:00
Jules Pietri b25973cc2e
[Form] Added support for caching choice lists based on options 2020-02-16 16:50:19 +01:00
Nicolas Grekas 9acb06041c minor #35731 [Routing] marked configurators traits as internal (HeahDude)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[Routing] marked configurators traits as internal

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | Fix https://github.com/symfony/symfony/pull/30501#discussion_r376806342 <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | not needed
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/releases):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

Commits
-------

52efec76ad [Routing] marked configurators traits as internal
2020-02-15 11:42:33 +01:00
Nicolas Grekas fcb833f26d minor #35717 time ( void ) : int (cbastienbaron)
This PR was merged into the 5.1-dev branch.

Discussion
----------

time ( void ) : int

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        |

no need to cast - micro improvement

Commits
-------

9f31581fd8 time ( void ) : int
2020-02-15 11:25:47 +01:00
bastien 9f31581fd8 time ( void ) : int
no need to cast
2020-02-15 11:25:26 +01:00
Jules Pietri 52efec76ad
[Routing] marked configurators traits as internal 2020-02-15 11:12:27 +01:00
Nicolas Grekas f46ab58bcf feature #35673 [Process] Add getter for process starttime (dompie)
This PR was squashed before being merged into the 5.1-dev branch.

Discussion
----------

[Process] Add getter for process starttime

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| Deprecations? | no
| Tickets       | issue #35531
| License       | MIT
| Doc PR        | symfony/symfony-docs#... <!-- required for new features -->

Add a getter for process start time.

Commits
-------

3b9ed3e378 [Process] Add getter for process starttime
2020-02-14 14:09:35 +01:00
Dominik Piekarski 3b9ed3e378 [Process] Add getter for process starttime 2020-02-14 14:09:17 +01:00
Nicolas Grekas 0f46aa602a [Contracts] Add changelog entry for "symfony/deprecation-contracts" 2020-02-14 10:07:39 +01:00
Nicolas Grekas 6f5932689a minor #35715 [Contracts] add missing changelog entries (nicolas-grekas)
This PR was merged into the 5.1-dev branch.

Discussion
----------

[Contracts] add missing changelog entries

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Commits
-------

9181c3ad61 [Contracts] add missing changelog entries
2020-02-14 10:05:28 +01:00
Nicolas Grekas 9181c3ad61 [Contracts] add missing changelog entries 2020-02-14 10:04:22 +01:00
Fabien Potencier 4c1ca329a4 Merge branch '5.0'
* 5.0:
  fix unix root dir issue
  sync validator translation files with master
  fix anchor
  fix links to releases page (formerly known as "roadmap")
  [Console] Don't load same-namespace alternatives on exact match found
  [HttpKernel] Fix method name in doc comments
2020-02-14 08:43:15 +01:00
Fabien Potencier 05f71d3fd5 Merge branch '4.4' into 5.0
* 4.4:
  fix unix root dir issue
  sync validator translation files with master
  [HttpFoundation] fix not sending Content-Type header for 204 responses
  [ErrorHandler] silence warning when zend.assertions=-1
  fix anchor
  [Console] Handle zero row count in appendRow() for Table
  fix links to releases page (formerly known as "roadmap")
  [Console] Don't load same-namespace alternatives on exact match found
2020-02-14 08:43:07 +01:00
Fabien Potencier 7a6e3c07b3 Merge branch '3.4' into 4.4
* 3.4:
  fix unix root dir issue
  sync validator translation files with master
  fix anchor
  fix links to releases page (formerly known as "roadmap")
  [Console] Don't load same-namespace alternatives on exact match found
2020-02-14 08:42:58 +01:00
Fabien Potencier f6f6a600a8 bug #35693 [Finder] Fix unix root dir issue (chr-hertel)
This PR was submitted for the 4.4 branch but it was merged into the 3.4 branch instead.

Discussion
----------

[Finder] Fix unix root dir issue

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #35683
| License       | MIT

not quite sure about this one 🤔

Commits
-------

9e431038b2 fix unix root dir issue
2020-02-14 08:34:28 +01:00
Christopher Hertel 9e431038b2 fix unix root dir issue 2020-02-14 08:34:21 +01:00
Fabien Potencier c09128cf9f Merge branch '4.4'
* 4.4:
  [HttpFoundation] fix not sending Content-Type header for 204 responses
  [ErrorHandler] silence warning when zend.assertions=-1
  [Console] Handle zero row count in appendRow() for Table
2020-02-14 08:32:25 +01:00
Fabien Potencier a603b14c21 minor #35708 [symfony/contracts] Reference one main CHANGELOG in each contracts (nicolas-grekas)
This PR was squashed before being merged into the 5.1-dev branch.

Discussion
----------

[symfony/contracts] Reference one main CHANGELOG in each contracts

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Reverts #35663
This PR makes it easier to publish the changelog for the contracts: there is only one to reference. We also need a changelog for symfony/contracts and this PR fixes this concern.

Commits
-------

d6fa13bafd [symfony/contracts] Reference one main CHANGELOG in each contracts
2020-02-14 08:32:04 +01:00
Nicolas Grekas d6fa13bafd [symfony/contracts] Reference one main CHANGELOG in each contracts 2020-02-14 08:31:56 +01:00
Fabien Potencier 1a7e4ea746 bug #35709 [HttpFoundation] fix not sending Content-Type header for 204 responses (Tobion)
This PR was merged into the 4.4 branch.

Discussion
----------

[HttpFoundation] fix not sending Content-Type header for 204 responses

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       |
| License       | MIT
| Doc PR        |

`$headers->remove('Content-Type')` did not actually work because PHP sends the Content-Type header based on the https://www.php.net/manual/en/ini.core.php#ini.default-mimetype ini setting anyway (which defaults to html). So we need to disable this ini for empty responses.

Commits
-------

06f5a1113d [HttpFoundation] fix not sending Content-Type header for 204 responses
2020-02-14 08:31:13 +01:00
Fabien Potencier a6773c115b bug #35710 [ErrorHandler] silence warning when zend.assertions=-1 (nicolas-grekas)
This PR was merged into the 4.4 branch.

Discussion
----------

[ErrorHandler] silence warning when zend.assertions=-1

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | -
| License       | MIT
| Doc PR        | -

Reported at 1000287d03 (commitcomment-37276894)

Commits
-------

67ef532f8c [ErrorHandler] silence warning when zend.assertions=-1
2020-02-14 08:27:30 +01:00
Fabien Potencier f20b36e3de minor #35712 [Validator] sync translation files with master (xabbuh)
This PR was merged into the 3.4 branch.

Discussion
----------

[Validator] sync translation files with master

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

e171386299 sync validator translation files with master
2020-02-14 08:25:01 +01:00
Christian Flothmann e171386299 sync validator translation files with master 2020-02-14 07:56:04 +01:00
Tobias Schultze 06f5a1113d [HttpFoundation] fix not sending Content-Type header for 204 responses 2020-02-13 20:40:01 +01:00
Nicolas Grekas 67ef532f8c [ErrorHandler] silence warning when zend.assertions=-1 2020-02-13 19:41:25 +01:00
Fabien Potencier fb743a545f minor #35705 fix anchor (garak)
This PR was merged into the 3.4 branch.

Discussion
----------

fix anchor

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | no
| New feature?  | no
| Deprecations? | no
| Tickets       | none
| License       | MIT
| Doc PR        | none

This is a continuation of PR #35703 that was merged a bit too early.
It accepts suggestion made there and, moreover, fixes anchor link (that changed from old roadmap page)

Commits
-------

5825e3c58c fix anchor
2020-02-13 18:43:56 +01:00
Fabien Potencier 657b8ec872 bug #35706 Fix package names (fabpot)
This PR was merged into the 5.1-dev branch.

Discussion
----------

Fix package names

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | yes
| New feature?  | no <!-- please update src/**/CHANGELOG.md files -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tickets       | n/a <!-- prefix each issue number with "Fix #", if any -->
| License       | MIT
| Doc PR        | n/a <!-- required for new features -->

Consistency fix.

Commits
-------

5b1e3ddda9 Fix package names
2020-02-13 18:23:00 +01:00
Fabien Potencier 5b1e3ddda9 Fix package names 2020-02-13 18:19:37 +01:00
Massimiliano Arione 5825e3c58c
fix anchor 2020-02-13 16:21:59 +01:00
Fabien Potencier e87b59971e bug #35676 [Console] Handle zero row count in appendRow() for Table (Adam Prickett)
This PR was squashed before being merged into the 4.4 branch.

Discussion
----------

[Console] Handle zero row count in appendRow() for Table

| Q             | A
| ------------- | ---
| Branch?       | 4.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | n/a
| License       | MIT
| Doc PR        | n/a

When a `Table` is created and rendered with no rows (headers only) and subsequently rows are added using `appendRow()`, the first call to `appendRow()` clears back one line too far., thus removing the last run

This is caused by `calculateRowCount()` not accounting for the fact that the footer separator is also the header separator when no rows are present.

This PR works around the issue by checking to ensure that at least 1 row exists before including the footer separator in the row count.

## Example

Command:
```php
<?php

namespace App\Command;

class TableTestCommand extends Command
{
    // ...

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $output->writeln('My table');

        $table = new Table($output->section());
        $table->setHeaders(['Column', 'Another column']);
        $table->render();

        $table->appendRow(['Value', 'Another Value']);
        $table->appendRow(['Value', 'Another Value']);
    }
}
```

Before fix:
```
+--------+----------------+
| Column | Another column |
+--------+----------------+
| Value  | Another Value  |
| Value  | Another Value  |
+--------+----------------+
```

After fix:
```
My table
+--------+----------------+
| Column | Another column |
+--------+----------------+
| Value  | Another Value  |
| Value  | Another Value  |
+--------+----------------+
```

Commits
-------

9b382590ee [Console] Handle zero row count in appendRow() for Table
2020-02-13 16:06:04 +01:00
Adam Prickett 9b382590ee [Console] Handle zero row count in appendRow() for Table 2020-02-13 16:05:57 +01:00
Fabien Potencier 7e0239b75e feature #35689 [String] Transliterate & to and (Warxcell)
This PR was submitted for the 5.0 branch but it was squashed and merged into the 5.1-dev branch instead.

Discussion
----------

[String] Transliterate & to and

| Q             | A
| ------------- | ---
| Branch?       | 5.0
| Bug fix?      | kind of
| New feature?  | no
| Deprecations? | no
| Tickets       |
| License       | MIT
| Doc PR        |

Commits
-------

76ff984ab5 [String] Transliterate & to and
2020-02-13 16:04:05 +01:00
Bozhidar Hristov 76ff984ab5 [String] Transliterate & to and 2020-02-13 16:03:58 +01:00
Fabien Potencier 648d488bb2 bug #35696 [Console] Don't load same-namespace alternatives on exact match (chalasr)
This PR was merged into the 3.4 branch.

Discussion
----------

[Console] Don't load same-namespace alternatives on exact match

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | no
| Tickets       | Fix #35479
| License       | MIT
| Doc PR        | -
<!--
Replace this notice by a short README for your feature/bugfix. This will help people
understand your PR and can be used as a start for the documentation.

Additionally (see https://symfony.com/roadmap):
 - Always add tests and ensure they pass.
 - Never break backward compatibility (see https://symfony.com/bc).
 - Bug fixes must be submitted against the lowest maintained branch where they apply
   (lowest branches are regularly merged to upper ones so they get the fixes too.)
 - Features and deprecations must be submitted against branch master.
-->

Commits
-------

707c5bade0 [Console] Don't load same-namespace alternatives on exact match found
2020-02-13 16:01:49 +01:00
Fabien Potencier 7f92a165de minor #35703 fix links to releases page (formerly known as "roadmap") (garak)
This PR was merged into the 3.4 branch.

Discussion
----------

fix links to releases page (formerly known as "roadmap")

| Q             | A
| ------------- | ---
| Branch?       | 3.4
| Bug fix?      | kind of
| New feature?  | no
| Deprecations? | no
| Tickets       | none
| License       | MIT
| Doc PR        | none

Current releases page is https://symfony.com/releases
Formerly it was https://symfony.com/roadmap and there's a nice redirect to new URL.
Anyway, I think that pointing to the right new URL would be better

Commits
-------

1c8fbe1cf9 fix links to releases page (formerly known as "roadmap")
2020-02-13 16:01:15 +01:00
Massimiliano Arione 1c8fbe1cf9
fix links to releases page (formerly known as "roadmap") 2020-02-13 15:46:26 +01:00
Robin Chalas 707c5bade0 [Console] Don't load same-namespace alternatives on exact match found 2020-02-13 01:35:20 +01:00