symfony - 如何将 Symfony 5 bundle 中定义的路由自动添加到项目中?
问题描述
我想Symfony 5.3+
在不同项目之间创建一个捆绑共享代码。虽然在我的项目中使用此包中的控制器、EventListeners 和其他自定义类没有问题,但我很难在包中定义路由并在项目中使用它们。如何才能做到这一点?
细节:
我使用以下结构创建了一个捆绑项目,并使用 composer 将其添加到我的 Symfony 项目中:
path/to/bundles/XYCommonsBundle/
config/
services.yaml
routes.yaml
src/
Controller/
SomeController.php
DependencyInjection
XYCommensExtension.php
XYCommensBundle.php
composer.json
...
// config/routes.yaml
xy_commons_some_route:
path: /some/route/path
controller: XY\CommonsBundle\Controller\SomeController::something
我发现许多教程展示了如何config/service.yaml
在load()
我的XYCommensExtension.php
. 我也尝试在routes.yaml
此处添加:
// src/DependencyInjection/XYCommensExtension.php
<?php
namespace XY\CommensBundle\DependencyInjection;
use ...
class XYCommensExtension extends Extension {
public function load(array $configs, ContainerBuilder $container) {
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../../config'));
$loader->load('services.yaml');
$loader->load('routes.yaml');
}
}
使用 Composer 将捆绑包添加到我的项目时,这会失败并出现异常:
没有扩展能够加载“xy_commons_some_route”的配置(在“/path/to/bundle/../../config/routes.yaml”中)。寻找命名空间“xy_commons_some_route”,发现“无”。
那么如何将捆绑包中的路由添加到我的项目中呢?这可以在添加捆绑包时自动完成,还是我必须手动将路由添加到我的项目routes.yaml
文件中(如何在此处访问/寻址捆绑包路由)?
解决方案
推荐阅读
- c# - 身份的注册方法在 IIS 上不起作用
- android - 如何创建自定义 SeekBar 首选项?
- php - cookie wordpress 的数据变量
- .htaccess - 301 重定向 - 根文件夹和子文件夹的不同位置
- java - 根据索引对列表中的字符串进行排序
- html - 如何解决底部 div 和顶部 div 固定位置上可滚动内容的透明度问题
- django - 如何将我的 Django 文件上传到 AWS ec2?
- python - 在 numpy 中使用 rstrip 删除文件扩展名
- python - 如何理解每个模型的 keras 中的 `preprocess_input` 函数?
- c# - 如何验证 asp.net mvc OWIN 从 azure AD B2C 收到的 id_token