在 Symfony 4 或 Symfony 5 新项目上安装 twig/extensions

Install twig/extensions on a Symfony 4 or Symfony 5 new project

我正准备将一个大型网站从 Symfony 3.4 迁移到 Symfony 4.4。 为此,我从全新安装的 Symfony 4.4 开始,由于初始项目需要使用 Twig Extensions,我尝试将其安装在这个新的 Symfony 4.4 项目上。 但是作曲家表示 Your requirements could not be resolved to an installable set of packages.

错误信息很明显,但我不明白为什么在新的 symfony 4.4 项目上会出现这种情况。

我尝试了什么:

这有效: - 我创建了一个新的 Symfony symfony new --full --version=3.4 testproject 安装了 Symfony 3.4 之后 composer require twig/extensions => OK

我知道 Symfony 4.4 及更高版本会发生依赖关系冲突,但根据 Symfony 文档 How to Write a custom Twig Extension 不需要进一步的操作,它应该可以工作。

我错过了什么?有人遇到同样的问题吗?谢谢

如果您使用的是 Flex,则应先安装 twig:

composer req twig

然后,做:

composer require twig/extensions

希望对你有所帮助。

最后,似乎 运行 composer require twig/extensions 不再需要在 Symfony 4 中创建自定义 Twig 扩展。 默认情况下,使用网站骨架构建的新 Symfony 欠 use Twig\Extension\AbstractExtension; 根据创建如下所示的树枝扩展的要求:

namespace App\Twig;

use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class AppExtension extends AbstractExtension
{
    public function getFilters()
    {
        return [
            new TwigFilter('price', [$this, 'formatPrice']),
        ];
    }

    public function formatPrice($number, $decimals = 0, $decPoint = '.', $thousandsSep = ',')
    {
        $price = number_format($number, $decimals, $decPoint, $thousandsSep);
        $price = '$'.$price;

        return $price;
    }
}