【问题标题】:Symfony routing and config componentsSymfony 路由和配置组件
【发布时间】:2018-03-13 05:47:32
【问题描述】:

Atm 我正在尝试迁移 php 代码

$routes->add(
    'index',
    new Route('/', ['_controller' => 'getIndex'])
);

到 YML 配置

index:
    path:   /
    defaults: { _controller:  'getIndex' }

但我遇到了错误

'There is no extension able to load the configuration for "index" (in /app/config\routes.yml).

YamlFileLoade 只是无法读取这种类型的配置,但为什么呢?我正在使用本指南 http://symfony.com/doc/current/components/routing/introduction.html 和我的代码来加载配置

$config = array(__DIR__ . '/app/config');
$loader = new YamlFileLoader($container, new FileLocator($config));
$loader->load('master.yml');
$collection = $loader->load('routing.yml');

已经可以与服务容器 (master.yml) 完美配合,但不能使用路由配置。

【问题讨论】:

  • 您的路由需要在app/config/routing.yml 或添加的捆绑包中。
  • 您是否使用了正确的 YamlFileLoader (Symfony\Component\Routing\Loader\YamlFileLoader)?此外,您的 $loader->load('master.yml') 与您的 routes.yml 文件名不匹配。
  • routing.yml 已经在 config 文件夹中,我只是举了一个 master.yml 的例子来说明 YamlFileLoader 为另一个配置文件工作,但不适用于 routing.yml :) 更新代码以避免误解了。
  • 您是否使用正确的 YamlFileLoader 读取它?服务一将只允许参数或服务,而路由一将允许路由。
  • @Qoop 请将此添加为anwser,我会标记它,你是对的,它们有相似的名称,而且我使用的是 DI 组件的 YamlFileLoader,而不是路由。

标签: php symfony


【解决方案1】:

起初,路由配置与 DI 配置有所不同。您现在正在尝试使用 DI 配置机制加载路由。

要使用路由,您应该创建一个文件app/config/routing.yml。这就是路线生活的地方。如果要将路由放入捆绑包中,则不能使用 DI 扩展类来加载它们。您必须将它们包含在 app/config/routing.yml 文件中,如下所示:

acme_demo_routes:
    resource: @AcmeDemoBundle/Resources/config/routes.yml

【讨论】:

    【解决方案2】:

    按要求发布评论作为答案...

    你是否使用正确的 YamlFileLoader 读取它?服务(DI)一将只允许参数或服务,而路由一将允许路由。

    路由 => Symfony\Component\Routing\Loader\YamlFileLoader

    DI => Symfony\Component\DependencyInjection\Loader\YamlFileLoader

    【讨论】:

    • 我们不能在 Symfony\Component\DependencyInjection\Extension 中使用加载器 Symfony\Component\DependencyInjection\Loader\YamlFileLoader。请参阅 Wouter J 的答案以了解如何操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多