【问题标题】:Attempted to load class "XmlUtils" from namespace "Symfony\Component\Config\Util"尝试从命名空间“Symfony\Component\Config\Util”加载类“XmlUtils”
【发布时间】:2017-04-16 14:13:11
【问题描述】:

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

XliffFileLoader.php 第 54 行中的 ClassNotFoundException:

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

模板在这里:

{% 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),或者没有安装php-xml,或者缺少配置。这些不是这里的问题,但这里有一个涵盖这三个中的两个:

Symfony app_dev.php install \DOMDomain error

这里是配置调用:

$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());

最后两个是根据配置错误被建议为罪魁祸首的。

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

【问题讨论】:

    标签: symfony symfony-forms silex


    【解决方案1】:

    通过查看指定的文件提示解决此问题:

    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);
        }
    

    第 54 行是第四行,以$dom 开头。 PhpStorm 显示以下两个 use 语句没有引用任何内容:

    use Symfony\Component\Config\Util\XmlUtils;
    use Symfony\Component\Config\Resource\FileResource;
    

    这让我想知道它是从哪里来的,导致了 symfony/config 组件。我回到 Silex FormServiceProvider 文档并记得运行此行:

    composer require symfony/validator symfony/config
    

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

    【讨论】:

    • 刚刚遇到了同样的问题。 symfony/config 组件由 symfony/translation 使用,但仅需要作为“require-dev”。我不明白为什么它不是常规依赖项,如果正常使用的话..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 2019-04-27
    • 2015-03-29
    • 2017-03-23
    • 2021-10-03
    • 1970-01-01
    相关资源
    最近更新 更多