在 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 4.4 的新 Symfony symfony new --full --version=lts testproject
,紧接着 composer require twig/extensions
=> Your requirements could not be resolved to an installable set of packages.
我创建了一个新的 Symfony symfony new --full testproject
,它安装了 Symfony 5.0,紧接着 composer require twig/extensions
=> Your requirements could not be resolved to an installable set of packages.
我尝试使用 Symfony flex 但同样的问题 => Your requirements could not be resolved to an installable set of packages.
- 我在清除作曲家缓存后重试,但没有任何变化。
这有效:
- 我创建了一个新的 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;
}
}
我正准备将一个大型网站从 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 4.4 的新 Symfony
symfony new --full --version=lts testproject
,紧接着composer require twig/extensions
=>Your requirements could not be resolved to an installable set of packages.
我创建了一个新的 Symfony
symfony new --full testproject
,它安装了 Symfony 5.0,紧接着composer require twig/extensions
=>Your requirements could not be resolved to an installable set of packages.
我尝试使用 Symfony flex 但同样的问题 =>
Your requirements could not be resolved to an installable set of packages.
- 我在清除作曲家缓存后重试,但没有任何变化。
这有效:
- 我创建了一个新的 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;
}
}