我只是想为我的系统创建一个子目录结构,我已经阅读了文档,课程和youtube vid,但是什么都行不通,每当我添加任何内容时都会出现错误
我的目录结构
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);
}
}
有什么方法可以使其保持简单或动态?我几乎要放弃了,谢谢你的忠告:)
如果您需要像在进行操作时那样指定服务配置,您只是错过了类定义:
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或更高版本。