【问题标题】:Symfony2: InvalidArgumentException: The service definition "templating.helpers.assets" does not existSymfony2:InvalidArgumentException:服务定义“template.helpers.assets”不存在
【发布时间】:2014-12-02 02:00:44
【问题描述】:

在处理我的 Symfony2 项目时,我(似乎)在转到任何页面时随机收到错误 InvalidArgumentException: The service definition "templating.helpers.assets" does not exist.。我尝试过回到之前的提交,但这并没有改变任何东西。所以它似乎不是我自己的任何源代码。我也不能composer update。我已尝试删除缓存、供应商目录和 composer.lock 文件,但仍然收到此错误:

使用包信息加载作曲家存储库

更新依赖(包括require-dev)

生成自动加载文件

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

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

Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache 处理 post-update-cmd 事件因异常而终止

[运行时异常]
执行“'cache:clear --no-warmup'”命令时出错。

有什么想法吗?

【问题讨论】:

  • 这似乎是一个错字。不应该是:templating.helper.assets(没有)。您的任何依赖项是否试图使用它?您是否尝试过在您的项目中搜索该字符串?你的作曲家包最近有更新吗?你使用固定版本吗?
  • 我没有使用固定版本,但是当问题发生时我没有更新软件包。我确实尝试在我的项目中搜索字符串,但没有找到任何有用的(至少对我而言)。在我清除缓存之前,就像 TwigBundle 资产扩展和一些缓存的东西。但我没有编辑任何树枝文件,当时只是 scss。既然您提到它是复数形式,我正在整理我的 scss 文件并在名为 helpers 的 css 文件夹中创建了一个子文件夹。但我什至尝试删除该文件夹,但错误仍在发生。
  • 幸运的是,在问题发生之前我已经将代码部署到了远程开发服务器,所以我能够抓住它并更新到最新的提交,这已经“修复”了我的问题。不过,我仍然看不出是什么导致了这个问题。
  • 这很奇怪。您是否尝试过区分这两个项目?
  • composer update 成功,post-update-cmd 失败,因为在您的 DI 容器中注册的内容正在引用 templating.helpers.assets,并且该服务未定义。

标签: php symfony composer-php


【解决方案1】:

仅供参考服务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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多