尝试从命名空间“Symfony \ Component \ Config \ Util”加载类“XmlUtils”

时间:2017-04-16 14:13:11

标签: symfony symfony-forms silex

使用Silex和Symfony组件构建简单站点时,在安装FormServiceProvider服务后收到以下错误:

  

XliffFileLoader.php第54行中的ClassNotFoundException:

     

尝试从命名空间“Symfony \ Component \ Config \ Util”加载类“XmlUtils”。   您是否忘记了另一个命名空间的“use”语句?

模板在这里:

{% extends 'base.html.twig' %}

{% block body %}
    <h1>{{ page.title }}</h1>
    <p>By {{ page.author }}, published on {{ page.publishedAt|date('m/d/Y') }}</p>
    <pre>{{ page.content }}</pre>
    <hr/>
    {{ form_start(form) }}
    {{ form_body(form) }}
    {{ form_end(form) }}
{% endblock %}

我按照这里的安装说明进行操作:

https://silex.sensiolabs.org/doc/2.0/providers/form.html

我已经阅读了许多其他问题,其中大部分都讨论了缺少全局命名空间标识符(\DomDocument而不是DomDocument,它继承了本地命名空间),或{{1}未安装,或者缺少配置。这些不是问题,但这里有一个涵盖这三个中的两个:

Symfony app_dev.php install \DOMDomain error

以下是配置调用:

php-xml

最后两个被认为是基于配置错误的罪魁祸首。

在这种情况下如何解决此错误?

1 个答案:

答案 0 :(得分:2)

通过查看指定的文件暗示了这个问题的解决方案:

$this->app->register(new ServiceControllerServiceProvider());
$this->app->register(new LocaleServiceProvider());
$this->app->register(new TranslationServiceProvider(), [
    'locale_fallbacks' => ['en'],
    'translator.messages' => [],
    'translator.domains' => [],
]);
$this->app->register(new AssetServiceProvider());
$this->app->register(new TwigServiceProvider(), [
    'twig.path' => self::TEMPLATE_DIR
]);
$this->app->register(new FormServiceProvider());
$this->app->register(new MonologServiceProvider());
$this->app->register(new HttpFragmentServiceProvider());

第54行是以private function extract($resource, MessageCatalogue $catalogue, $domain) { try { $dom = XmlUtils::loadFile($resource); } catch (\InvalidArgumentException $e) { throw new InvalidResourceException(sprintf('Unable to load "%s": %s', $resource, $e->getMessage()), $e->getCode(), $e); } 开头的第四行。 PhpStorm表明以下两个$dom语句没有引用任何内容:

use

这让我想知道它来自哪里,导致了use Symfony\Component\Config\Util\XmlUtils; use Symfony\Component\Config\Resource\FileResource; 组件。我回到了Silex symfony/config文档并记得运行这一行:

FormServiceProvider

注意列表中的第二个。要么我忘了键入或(我记得)我做了键入它并且它没有安装。也许它扔了一个错误,我没有抓到它?我不知道。但是,如果您在使用Symfony组件的项目中收到此错误,请检查以确保已安装Config组件。