新的 choice_translation_locale 选项

Contributed by
Yonel Ceruto
in #26825.

在 Symfony 4.1 中,CountryType, CurrencyType, LanguageTypeLocaleType 几个表单字段,定义了一个全新的 choice_translation_locale 选项来改变用于翻译各自元素列表的 locale。在之前的 Symfony 版本中,elements 总是按照当前 locale 被翻译:

1
2
3
4
5
$formBuilder->add('country', CountryType::class, [
    // translate elements into Spanish, regardless of the current locale
    // 把元素译成西班牙文,不管当前是什么locale
    'choice_translation_locale' => 'es',
]);

添加了一个命令来删除缓存池的元素

Contributed by
Pierre du Plessis
in #26223.

在 Symfony 4.1 中,有一个全新的 cache:pool:delete 命令,允许你从 cache pool 中删除特定 item。当你开发程序时,不想删除整个缓存池只想删除一个元素时,这是最有用的功能:

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

在 allow_if 表达式中使用自定义函数

Contributed by
David Maicher
in #26660.

在复杂程序中,access_control 这个安全配置项,可包含通过 ExpressionLanguage组件 定义的 security expressions:

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

在 Symfony 4.1 中,allow_if 可包含定义在你程序中的任何 custom ExpressionLanguage functions(自定义表达式)。

添加了一个 dd() debug helper(除错助手)

Contributed by
Nicolas Grekas
in #26970.

使用一个连接到你编辑器的debugger,是程序除错的最佳方式。但是,有时直接调用 dump()函数 则不输 debugger 的高效而且执行得极快。在 Symfony 4.1 中我们引入了一个名为 dd() 的除错助手,来打包给定信息并立即停止程序,如同一个标准的除错流程:

1
2
3
dd($user, $request);
// equivalent to:
// dump($user, $request); exit(1);