Symfony2: 参数异常:服务定义“templating.helpers.assets”不存在。

9
在我的Symfony2项目中,访问任何页面时,我(似乎)随机地遇到了错误InvalidArgumentException: The service definition "templating.helpers.assets" does not exist.。我已经尝试回到早期的提交,但这并没有改变什么。所以似乎不是我的源代码的问题。我也无法运行composer update。我已经尝试删除缓存、vendor目录和composer.lock文件,但仍然会出现这个错误:

正在使用软件包信息加载composer存储库

更新依赖项(包括require-dev)

生成自动加载文件

更新“app/config/parameters.yml”文件

[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]
服务定义“templating.helpers.assets”不存在。

脚本Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache处理post-update-cmd事件时终止了异常

[RuntimeException]
在执行“'cache:clear --no-warmup'”命令时发生错误。

有任何想法吗?

我不使用固定版本,但在问题发生时我没有更新过包。我确实尝试在我的项目中搜索字符串,但没有找到什么很有用的东西(至少对我来说)。只是一些关于TwigBundle Assets Extension和清除缓存之前的一些缓存内容。但当时我并没有编辑任何twig文件,只是scss文件。现在你提到它是复数形式,我正在组织我的scss文件,并在css文件夹中创建了一个名为“helpers”的子文件夹。但我甚至尝试删除那个文件夹,错误仍然存在。 - ryanwiesjahn
幸运的是,在问题发生之前,我已经将代码部署到了远程开发服务器上,所以我只需要获取那个版本并更新到最新提交,这样就“修复”了我的问题。尽管如此,我仍然不知道是什么原因导致了这个问题。 - ryanwiesjahn
2
很奇怪。你试过将这两个项目进行差异比较吗? - Fred
你是否在自己的bundle中定义了使用templating.helper.assets的任何服务?如果是,请展示给我们服务定义。 - Genti Saliu
1
composer update 成功了,但 post-update-cmd 失败了,因为您的 DI 容器中注册的某些内容正在引用 templating.helpers.assets,而该服务未定义。 - Steve Buzonas
显示剩余2条评论
1个回答

0

提醒一下,服务templating.helper.assets已经存在

php app/console container:debug  templating.helper.assets 
[container] Information for service templating.helper.assets
Service Id       templating.helper.assets
Class            Symfony\Component\Templating\Helper\CoreAssetsHelper
Tags
    - templating.helper              (alias: assets)
Scope            request
Public           yes
Synthetic        no
Lazy             no
Synchronized     no
Abstract         no

它是由Symfony\Bundle\FrameworkBundle\FrameworkBundle()创建的, 并在Resources\config\templating_php.xml中定义。

    <service id="templating.helper.assets" class="%templating.helper.assets.class%">
        <tag name="templating.helper" alias="assets" />
        <argument /> <!-- default package -->
        <argument type="collection" /> <!-- named packages -->
    </service>

因此,请在您的appKernel.php中添加此捆绑包

public function registerBundles()
{
    $bundles = array(
        //Standard
        new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
        //others bundles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接