symfony - 如何在 SF4 的 Twig 扩展中注入依赖项
问题描述
我正在尝试将资产依赖项添加到 TwigExtension 但我最终得到:
无法自动装配服务“App\Twig\AppExtension”:方法“__construct()”的参数“$urlPackage”引用类“Symfony\Component\Asset\UrlPackage”,但不存在此类服务。
所以这基本上就是我正在做的事情:
use Symfony\Component\Asset\UrlPackage;
...
protected $urlPackage;
public function __construct(UrlPackage $urlPackage)
{
$this->urlPackage = $urlPackage;
}
....
$url = $this->urlPackage->getUrl("build/assets/images/svg/notification.svg");
当然,我已经检查了天气或包裹是否存在:
/var/www/fromton # bin/console debug:container | grep assets
Symfony\Component\Asset\Packages alias for "assets.packages"
assets._default_package Symfony\Component\Asset\PathPackage
assets._version__default Symfony\Component\Asset\VersionStrategy\JsonManifestVersionStrategy
assets.context Symfony\Component\Asset\Context\RequestStackContext
assets.empty_package Symfony\Component\Asset\Package
assets.empty_version_strategy Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy
assets.json_manifest_version_strategy Symfony\Component\Asset\VersionStrategy\JsonManifestVersionStrategy
assets.packages Symfony\Component\Asset\Packages
assets.path_package Symfony\Component\Asset\PathPackage
assets.static_version_strategy Symfony\Component\Asset\VersionStrategy\StaticVersionStrategy
assets.url_package Symfony\Component\Asset\UrlPackage
console.command.assets_install Symfony\Bundle\FrameworkBundle\Command\AssetsInstallCommand
twig.extension.assets Symfony\Bridge\Twig\Extension\AssetExtension
到底怎么回事?我也要进去做点什么services.yml
吗?
解决方案
我也应该在 services.yml 中做点什么吗?
是的,您需要定义一个新的服务别名来完成基于其 FQCN 的自动装配:
services:
# ...
Symfony\Component\Asset\UrlPackage: '@assets.url_package'
推荐阅读
- html - 我们如何从 github 链接中知道 csv 的来源
- python - 使用铰链损失的 Mnist 数据集的鲁棒机器学习
- python - 使用卷积计算距离 numpy
- python - 异步运行 Azure Durable Function
- python - 为什么在 python 上的 if 语句中有 2 个等号
- laravel - 如何使用查询结果在 laravel 中查询更多内容?
- c++ - 是否可以在 C++ 中编写通用算术函数?
- javascript - 初始化组件后是否可以传递数据?
- c++ - doxygen:如何在类引用和文件引用中记录类成员函数
- java - 返回给定数组的一个版本,其中数组中的每个零值都被数组中零右侧的最大奇数值替换