当我有子模块时如何配置services.yaml?

问题描述 投票:0回答:1

我只是想为我的系统创建一个子目录结构,我已经阅读了文档,课程和youtube vid,但是什么都行不通,每当我添加任何内容时都会出现错误

enter image description here

我的目录结构

src->基本->提供-> src->提供或用户->存储库-> UsersRepository.php

src->实体-> UserEntity.php

src->管理员-> Offer-> src-> Offer或Users->控制器-> OfferController.php

src->管理员->报价-> src->报价或用户->服务-> OfferService.php

#services.yaml 

# my controller
App\Offer\Offer\Controller\:
    resource: '../src/Web/Offer/src/Offer/Controller'
    tags: ['controller.service_arguments']

# default service
offer.service:
    class: App\Offer\Offer\Service\OfferService
    public: true
App\Offer\Offer\Service\OfferService: '@offer.service'

# default repository
offer.repo:
    class: App\Base\Offer\Offer\Repository\UsersRepository
    public: true

App\Base\Offer\Offer\Repository\UsersRepository: '@offer.repo'

在我的控制器中

<?php
namespace App\Offer\Offer\Controller;
use App\Base\Offer\Offer\Repository\UsersRepository;
use App\Offer\Offer\Service\OfferService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;

class OfferController extends AbstractController
{

    /**
     * @Route("/web/offer", name="offer_list")
     */
    public function index(OfferService $service,UsersRepository $repo)
    {
        # can i do this ?
        #$a = new OfferService();
        #$a = $this->get('offer.service');

        $b = $service->OfferTester();

        $c = $repo->findAll();

        return new Response(
           '{"success":"'.$c.'"}'
        );
    }
}

在我的仓库中

namespace App\Base\Offer\Offer\Repository;

use App\Entity\User;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Common\Persistence\ManagerRegistry;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * @method User|null find($id, $lockMode = null, $lockVersion = null)
 * @method User|null findOneBy(array $criteria, array $orderBy = null)
 * @method User[]    findAll()
 * @method User[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
 */

class UsersRepository extends ServiceEntityRepository
{
    public function __construct(ManagerRegistry $registry)
    {
        parent::__construct($registry, User::class);
    }


}

有什么方法可以使其保持简单或动态?我几乎要放弃了,谢谢你的忠告:)

php symfony yaml symfony4
1个回答
0
投票

如果您需要像在进行操作时那样指定服务配置,您只是错过了类定义:

App\Base\Offer\Offer\Repository\UsersRepository:
    public: false

# default repository
offer.repo:
    class: App\Base\Offer\Offer\Repository\UsersRepository
    public: true

但是要明确地说,symfony预先配置了这种方式来配置服务https://symfony.com/doc/current/service_container.html#importing-many-services-at-once-with-resource

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.

    # makes classes in src/ available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    App\:
        resource: '../src/*'
        exclude: '../src/{DependencyInjection,Entity,Migrations,Tests,Kernel.php}'

PS:用于symfony 3或更高版本。

© www.soinside.com 2019 - 2024. All rights reserved.