过去几个月中我们发表了差不多40篇关于 Symfony 4.1新功能 的博客。在本文中你可以发现其他一些细小但精彩的功能。

让 csrf_token() 毋须表单即可使用

Contributed by
Christian Flothmann
in #25197.

csrf_token() Twig function 目前仅当 Form组件 安装后才被注册。但是,这一功能却是有用的,例如,当 在登录表单中通过CSRF进行保护 ,你并不需要完整的表单组件时。

在 Symfony 4.1 中,你可以使用 csrf_token() 模板函数,毋须表单组件。

环境变量的 CSV 处理器

Contributed by
Kévin Dunglas
in #25627.

尽管不像其他格式比如 JSON 和 YAML 那样流行,某些程序还是会把它们的环境变量利用 CSV 格式来存储。在 Symfony 4.1 中你可以使用全新的 csv 处理器来把那些内容反解成 PHP 数组 (它使用的是 str_getcsv() PHP 函数来完成转换):

1
2
3
4
5
parameters:
    env(some_parameter): 'foo,bar,baz'
    some_option: %env(csv:some_parameter)%
    # 'some_option' is array('foo', 'bar', 'baz') in the PHP app
    # 'some_option' 在 PHP 程序中是数组

Combine this new csv processor with the existing file: processor to parse the CSV encoded env vars stored in some file.

让 ProgressBar::setMaxSteps 公有

Contributed by
Gabriel Ostrolucký
in #26449.

在 Symfony 4.1 中这个方法是公有的,因此你可以在程序执行时动态地改变进度条的大小。这在极端情况下有用,比如一个大文件在下载完成之前显示进度条是:

1
2
3
4
5
6
7
8
9
10
11
12
use Symfony\Component\Console\Helper\ProgressBar;
 
$bar = new ProgressBar($output);
$bar->start();
$bar->setProgress(2);
 
$bar->setMaxSteps(10);
$bar->setProgress(5);
 
$bar->setMaxSteps(100);
$bar->setProgress(10);
$bar->finish();

本例在控制台终端中显示如下进度条:

1
2
3
4
5
      0 [----------------------------]
      2 [==|-------------------------]
   5/10 [==============|-------------]  50%
 10/100 [==|-------------------------]  10%
100/100 [============================] 100%

在 profiler 分析器中显示 DotEnv 变量

Contributed by
Roland Franssen
in #25166.

在 Symfony 4.1 中,由 DotEnv组件 创建的环境变量现在从其他环境变量中区分出来,独立显示在分析器中。这让你检查 .env 配置文件是否如预期般工作变得更容易: