Как возможно, чтобы параметр хранилища был нулевым? - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь улучшить старый проект, построенный с symfony 3.2, но я столкнулся со странной проблемой. Я просто пытаюсь получить некоторые данные в моем контроллере, чтобы отправить их на просмотр. Но по какой-то причине я не могу получить доступ к функции хранилища, которую я сделал из моего контроллера. Вот код:

Репозиторий

class CommandeRepository extends EntityRepository
{
   ...

   public function getSPSExpe()
   {
     $dql = 'SELECT .....(not showing it for security reason)';

     $em = $this->getDoctrine()->getManager('default');
     $query = $em->createQuery($dql);
     $query->setParameters(array(
        'idSite' => 201,
        'idEtat' => 9
     ));
     $results = $query->getResult();
     return $results;
   }
}

Контроллер

class ExpeditionController extends Controller
{
    ...

    public function expeditionSPS(CommandeRepository $repo)
    {
       $results = $repo->getSPSExpe();

       return $this->render('WorkflowFrontOfficeBundle:Expedition:expeditionSPS.html.twig', 
       ['results' => $results]);
    }

}

Кажется, хорошо, верно ??! но я получаю эту ошибку: Контроллер ... требует, чтобы вы предоставили значение для аргумента "$ repo". Либо аргумент имеет значение NULL, и значение NULL не было предоставлено, значение по умолчанию не было предоставлено, либо потому, что после этого есть необязательный аргумент

И когда я устанавливаю CommandeRepository $ repo = null в качестве параметра, который я получаю : вызов getSPSExpe () для null ....

Есть ли у вас какие-либо идеи о том, что здесь нужно сделать? Большое спасибо за ваше время.

Благодаря Delboy я немного заглянул в сервисный контейнер более старых symfony версий. Я выполнил "php bin / console debug: хранилище контейнеров и получил:

    Information for Service "doctrine.orm.container_repository_factory"
===================================================================

 ------------------ ---------------------------------------------------------------------- 
  Option             Value                                                                 
 ------------------ ---------------------------------------------------------------------- 
  Service ID         doctrine.orm.container_repository_factory                             
  Class              Doctrine\Bundle\DoctrineBundle\Repository\ContainerRepositoryFactory  
  Tags               -                                                                     
  Public             no                                                                    
  Synthetic          no                                                                    
  Lazy               no                                                                    
  Shared             yes                                                                   
  Abstract           no                                                                    
  Autowired          no                                                                    
  Autowiring Types   -                                                                     
 ------------------ ---------------------------------------------------------------------- 

Не могу найти, как установить autowired в yes для этого класса.

...