当前位置: 首页 > 面试题库 >

如何在Symfony中将存储库注入服务?

韩阳云
2023-03-14
问题内容

我需要将两个对象注入ImageService。其中一个是的实例Repository/ImageRepository,我得到这样的信息:

$image_repository = $container->get('doctrine.odm.mongodb')
    ->getRepository('MycompanyMainBundle:Image');

那么如何在我的services.yml中声明呢?这是服务:

namespace Mycompany\MainBundle\Service\Image;

use Doctrine\ODM\MongoDB\DocumentRepository;

class ImageManager {
    private $manipulator;
    private $repository;

    public function __construct(ImageManipulatorInterface $manipulator, DocumentRepository $repository) {
        $this->manipulator = $manipulator;
        $this->repository = $repository;
    }

    public function findAll() {
        return $this->repository->findAll();
    }

    public function createThumbnail(ImageInterface $image) {
        return $this->manipulator->resize($image->source(), 300, 200);
    }
}

问题答案:

我找到了此链接,这对我有用:

parameters:
    image_repository.class:            Mycompany\MainBundle\Repository\ImageRepository
    image_repository.factory_argument: 'MycompanyMainBundle:Image'
    image_manager.class:               Mycompany\MainBundle\Service\Image\ImageManager
    image_manipulator.class:           Mycompany\MainBundle\Service\Image\ImageManipulator

services:
    image_manager:
        class: %image_manager.class%
        arguments:
          - @image_manipulator
          - @image_repository

    image_repository:
        class:           %image_repository.class%
        factory_service: doctrine.odm.mongodb
        factory_method:  getRepository
        arguments:
            - %image_repository.factory_argument%

    image_manipulator:
        class: %image_manipulator.class%


 类似资料:
  • 我正在用Symfony制作简单的应用程序。我在这里配置了服务 我的服务使用存储库(例如,评论服务使用评论存储库),这里是的构造函数 性质 构造函数: 当我试图运行我的应用程序我得到这个错误 PHP致命错误:未捕获Symfony\Component\DependencyInjection\Exception\AutowiringFailedException:无法自动连线服务“AppBundle\R

  • 我正在使用匕首2,我有一个定义如下的: 这是FYViewModel的: 但是,变量始终为空。 如何使用匕首2将Repositroy注入我的ViewModel?

  • 我正在尝试将一些细枝视图作为定制邮件服务的模板注入,这将被另一个服务用作依赖项。 我不明白为什么,但好像Symfony没有看到我试图在$parameters中注入的参数。 将此服务数组作为参数注入的正确方法是什么? 以下是services.yaml部分: RestMailer服务构造函数: 以下是返回的错误: 在DefinitionErrorExceptionPass.php第54行中: 无法自动

  • 问题内容: 我有一个具有简单场景(表单)的Java FX基本应用程序。我有一个Mysql Db,我正在使用Spring JPA(spring数据jpa,即存储库/实体)与之交互。 现在,由于我们知道javaFx有一些生命周期挂钩,即:init()start()和stop()。 假设我想使用JPA save() 方法在数据库中插入数据。通常,如果是我的控制器,则进行正常的数据库注入,例如: 本来可以

  • 问题内容: 我已经创建了自己的服务,并且需要注入原则EntityManager,但是我没有看到在我的服务上被调用,并且注入不起作用。 这是代码和配置: 这是我的包 我已经将.yml导入了我的应用中 当我在控制器中致电服务时 我得到一个对象(不为null),但是在UserService中为null,正如我已经提到的,从未调用过UserService上的构造函数 还有一件事,Controller和Us

  • 我已经创建了自己的服务,需要注入doctrine EntityManager,但我看不到在我的服务上调用了,注入也不起作用。 以下是代码和配置: 这是我的包中的 我已经导入了. yml在在我的应用程序中 当我在控制器中调用服务时 我得到一个对象(不是null),但是