php - 在 Sylius/Symfony 中解析控制器服务
问题描述
锄头让 Symfony 将Sylius服务解析sylius.controller.shop_user
为控制器类文件Sylius\Bundle\UserBundle\Controller\UserController
。
我的理解是那sylius.controller.shop_user
是一个服务,在Symfony里面会有对应的服务配置。这个服务配置将告诉 Symfony 在需要实例化服务时使用哪个类。
但是,我似乎在任何地方都找不到sylius.controller.shop_user
Sylius 源配置中的配置。路由文件中只是对此服务的引用
#File: src/Sylius/Bundle/ShopBundle/Resources/config/routing/ajax/user.yml
sylius_shop_ajax_user_check_action:
path: /check
methods: [GET]
defaults:
_controller: sylius.controller.shop_user:showAction
_format: json
_sylius:
repository:
method: findOneByEmail
arguments:
email: $email
serialization_groups: [Secured]
或在磁盘容器缓存文件中。
var/cache/dev/srcKernelDevDebugContainer.xml
1798: <parameter key="sylius.controller.shop_user.class">Sylius\Bundle\UserBundle\Controller\UserController</parameter>
15230: <service id="sylius.controller.shop_user" class="Sylius\Bundle\UserBundle\Controller\UserController" public="true">
那么 Symfony 是如何知道为该服务实例化正确的类的呢?
有没有我看不到的配置?一些自动生成类的 Symfony 魔法?其他一些我不知道我不知道的神秘的第三件事?
我没有任何具体的任务,我只是想了解一下 Sylius 和 Symfony 是如何在幕后工作的。
解决方案
控制器服务是基于 ResourceBundle 在Sylius\Bundle\ResourceBundle\DependencyInjection\Driver\AbstractDriver::addController
. 加载包时调用此驱动程序。
推荐阅读
- semantic-ui - 语义 ui 功能区边缘反转,仅在右侧正常工作
- php - 在某些情况下,我会收到警告:file_get_contents(): Filename cannot be empty
- c# - 处理多对多关系的最干净的方法是什么?
- apache-spark - 如何使用 Apache Spark 将混合 Parquet 模式加载到 DataFrame 中?
- c - 过程与信号同步
- bash - 如何在Shell脚本中将一个变量与附加到另一个变量的变量相等
- php - 我可以看到函数外部的数组,但函数内部没有,如何在函数内部传递变量?
- recaptcha - 为什么我不能将 v2 Google recaptcha 密钥用于不可见的 recaptcha 密钥?
- html - 将录制的视频保存在 iOS 设备上的 Safari Web 应用程序中
- jdbc - QUARTZ JDBC JobStore 如何从数据库中选择下一个作业