Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自有Symfony3供应商捆绑包中带注释的路由_Symfony - Fatal编程技术网

自有Symfony3供应商捆绑包中带注释的路由

自有Symfony3供应商捆绑包中带注释的路由,symfony,Symfony,我想构建一个具有多个可重用捆绑包的私有生态系统,类似于Sonata项目。这是我第一次使用DefaultController创建了一个名为PUIEconomyBundle的简单包。我使用composer.json将捆绑包从Git repo导入到一个示例项目中 现在我遇到了一个404没有找到“GET/test”的路由。有注释的路线以保持概览是很重要的如何将带注释的工作路由引入控制器?调试:路由器没有提到来自此捆绑包的路由,尽管探查器表示已启用PUIEconomyBundle 默认控制器: 分机: S

我想构建一个具有多个可重用捆绑包的私有生态系统,类似于Sonata项目。这是我第一次使用DefaultController创建了一个名为PUIEconomyBundle的简单包。我使用composer.json将捆绑包从Git repo导入到一个示例项目中

现在我遇到了一个404
没有找到“GET/test”的路由
。有注释的路线以保持概览是很重要的如何将带注释的工作路由引入控制器?调试:路由器
没有提到来自此捆绑包的路由,尽管探查器表示已启用PUIEconomyBundle

默认控制器: 分机: Services.yml: 路由加载器: Routing.yml:
谢谢

您似乎忘记添加以下内容:

app_extra:
    resource: .
    type: extra
app/config/routing.yml


请参阅。

为什么要使用自定义路由加载程序?这是一个相当先进的主题,不需要通过注释简单地将控制器绑定到路由上

您可以在此处找到@Route注释的工作示例:


您还应该删除die()语句。如果您以这种方式终止请求,Symfony mabey不会给您答复

您不需要自定义路由加载器来加载包注释的路由。

我也面临着类似的问题。我们所需要的就是把这个配置放到我们想要加载包的应用程序中

config/routes.yaml

就这些:)


my\u cool\u bundle\u路由
命名不重要。它必须是唯一的。

我刚刚尝试使用到
/extra/{parameter}
的路由实现“extra”自定义加载程序(还将该方法添加到我的DefaultController)。又是404。我认为routingloader不是由DelegatingLoader加载的,但是
php bin/console debug:container
显示了我的routingloader。。Symfony是否也识别每个供应商包中的
Resources/config/routing.yml
路径,或者我是否需要在PUIEconomyBundle.php或PUIEconomyExtension.php中添加一些内容?路由器将加载您在自定义加载程序中注册的路由。您拥有PUIEconomyBundle/Resources/config/routing.yml(指向@PUIEconomyBundle/Controller),并在自定义加载程序中注册了它。在DefaultController类的indexAction中,您提到@Route/test,这意味着您可以通过将浏览器指向以下内容来访问该操作。嗨,el_wichtel,我正在尝试使带注释的路由正常工作,但它在我尝试的所有操作中都给出了404。有或没有自定义路由加载程序..您可以通过bin/console debug:router命令查看路由吗?没有,没有来自我的包的路由,但我确实看到来自默认AppBundle的路由。探查器说PUIEconomyBundle已启用
public function load(array $configs, ContainerBuilder $container)
{
    $configuration = new Configuration();
    //$config = $this->processConfiguration($configuration, $configs);

    $fileLocator = new FileLocator(__DIR__.'/../Resources/config');
    $loader = new Loader\YamlFileLoader($container, $fileLocator);
    $loader->load('services.yml');
}
services:
    pui_economy.routing_loader:
        class: Company\PUI\EconomyBundle\Service\RoutingLoader
        tags:
            - { name: routing.loader }
class RoutingLoader extends Loader
{
    public function load($resource, $type = null)
    {
        $collection = new RouteCollection();

        $resource = '@PUIEconomyBundle/Resources/config/routing.yml';
        $type = 'yaml';

        $importedRoutes = $this->import($resource, $type);

        $collection->addCollection($importedRoutes);

        return $collection;
    }

    public function supports($resource, $type = null)
    {
        return 'advanced_extra' === $type; // ??
    }
}
pui_economy:
    resource: "@PUIEconomyBundle/Controller"
        type: annotation
app_extra:
    resource: .
    type: extra
my_cool_bundle_routes:
  # loads routes from the given routing file stored in some bundle
  resource: '@XyzAuthBundle/Controller/'
  type:     annotation