使用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
最后两个被认为是基于配置错误的罪魁祸首。
在这种情况下如何解决此错误?
答案 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组件。