New choice_translation_locale option

Yonel Ceruto
Contributed by Yonel Ceruto in #26825

In Symfony 4.1, the CountryType, CurrencyType, LanguageType and LocaleType form fields define a new choice_translation_locale option to change the locale used to translate their lists of elements. In previous Symfony versions, elements were always translated to the current locale:

1
2
3
4
$formBuilder->add('country', CountryType::class, [
    // translate elements into Spanish, regardless of the current locale
    'choice_translation_locale' => 'es',
]);

Added a command to delete cache pool items

Pierre du Plessis
Contributed by Pierre du Plessis in #26223

In Symfony 4.1, there is a new cache:pool:delete command that allows you to delete specific items from the cache pool. This is mostly useful while developing the application, to not delete the entire cache pool when you only need to clear one element:

1
$ php bin/console cache:pool:delete <cache-pool-name> <cache-key-name>

Use custom functions in allow_if expressions

David Maicher
Contributed by David Maicher in #26660

In complex applications, the access_control security config can include security expressions defined with the ExpressionLanguage component:

1
2
3
4
5
6
7
# config/packages/security.yaml
security:
    # ...
    access_control:
        -
            path: ^/_internal/secure
            allow_if: "'127.0.0.1' == request.getClientIp() or has_role('ROLE_ADMIN')"

In Symfony 4.1, allow_if expressions can also include any custom ExpressionLanguage functions defined in your application.

Added a dd() debug helper

Nicolas Grekas
Contributed by Nicolas Grekas in #26970

Using a debugger connected to your code editor is the best way to debug your applications. However, sometimes a call to the dump() function can be as effective as the debugger and much faster to execute. In Symfony 4.1 we introduced a helper called dd() that dumps the given information and stops the application immediately, which is a common workflow when debugging apps:

1
2
3
dd($user, $request);
// equivalent to:
// dump($user, $request); exit(1);
Published in #Living on the edge