Как настроить services.yaml, когда у меня есть подмодули? - PullRequest
0 голосов
/ 15 февраля 2020

Я просто пытаюсь создать структуру подкаталогов для своей системы, я уже прочитал документацию, курсы и видеоролики с YouTube, но ничего не работает, каждый раз, когда я получаю сообщение об ошибке в любое время, я добавляю что-то

enter image description here

моя структура каталогов

ср c -> База -> Предложение -> ср c -> Предложение или пользователи -> репозиторий -> UsersRepository. php

ср c -> Entity -> UserEntity. php

ср c -> Администратор -> Предложение -> SR c -> Предложение или Пользователи -> Контроллер -> Предложение контроллера. php

SR c -> Администратор -> Предложение - > sr c -> Предложение или Пользователи -> Сервис -> Служба предложений. 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);
    }


}

имеет какой-нибудь способ сделать его простым или динамичным c? я почти сдаюсь, спасибо в совете:)

1 Ответ

0 голосов
/ 15 февраля 2020

Если вам нужно указать конфигурацию служб, как вы делаете, вы просто пропустили определение класса:

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-единовременно с ресурсом :

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 или выше.

...