Запрос Доктрины от таможенного класса

/ Отредактированные /

У меня есть этот класс:

namespace Baza\BlogBundle\Form;   
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Doctrine\ORM\EntityManager; 

class filterType extends AbstractType
{

  protected $em;
  public function __construct(EntityManager $em)
 {
     $this->em = $em;
 }
public function buildForm(FormBuilderInterface $builder, array $options)
{

   $this->$em->getDoctrine()->getEntityManager();

   /****
   ****/

 }
}

И это - мои услуги yml:

services:
 filterType:
    class: Baza\BlogBundle\Form\filterType
    arguments: [doctrine.orm.entity_manager]

Когда я управляю кодом, я получаю следующее исключение:

Фатальная ошибка Catchable: Аргумент 1 прошел к Baza\BlogBundle\Form\filterType:: __ конструкция() должна быть случаем Doctrine\ORM\EntityManager, ни одно данное

Я - все из идей.

1
nl ja de
, которым должен быть $this->$em-> getDoctrine ()-> getEntityManager() $this-> их .
добавлено автор flu, источник
Попытка: аргументы: [@doctrine.orm.entity_manager] Добавленный , не уверенный, что это означает только весь мой код Symfony, использует его.
добавлено автор phpisuber01, источник
+1 для Artern относительно того, почему вы используете AbstractType в качестве слушателя доктрины событий. You' ре, также пропускающее ваш второй аргумент в сервисном определении для AppKernel. Кроме того, почему вы пытаетесь передать AppKernel как сервис определение?
добавлено автор Mike, источник
Убедитесь, что вы, имеют правильное количество мест.
добавлено автор Artem L, источник
Почему вы добавляете Форму , тип как Доктрина предварительно сохраняется ?
добавлено автор Artem L, источник
Я попробовал его, я добираюсь: "ScannerException, просматривая для следующего символа, у нас был этот найденный характер (64), который не может начать символ" в редакторе.
добавлено автор Xardas, источник
Я пробовал что-то, I' m вполне уверенный that' s не вызывающий ошибку здесь.
добавлено автор Xardas, источник
Я отредактировал код согласно вашим замечаниям. Та же самая ошибка все еще сохраняется.
добавлено автор Xardas, источник

2 ответы

Я создал FormType сам. Это должно работать:

<?php
// Baza\BlogBundle\Form\filterType.php

namespace Baza\BlogBundle\Form;  

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Doctrine\ORM\EntityManager;

class filterType extends AbstractType
{
  protected $em;

  public function __construct(EntityManager $em)
  {
     $this->em = $em;
  }

  public function buildForm(FormBuilderInterface $builder, array $options)
  {
   //Do something with your Entity Manager using "$this->em"
  }

  public function getName()
  {
      return 'filter_type';
  }
}

В вашем Диспетчере используют что-то как

<?php
// Baza\BlogBundle\Controller\PageController.php

namespace Baza\BlogBundle\Controller;
use Baza\BlogBundle\Form\filterType;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class BaseController extends Controller
{
     public function testEntityManager()
     {
        //assign whatever you need
         $enquiry = null;
        //getEntityManager() is depricated. Use getManager() instead.
         $em = $this->getDoctrine()->getManager();

         $this->createForm(
             new filterType($em),
             $enquiry
         );
     } 
}

Никогда не забывают включать/использовать все классы, которые вы используете. Иначе PHP предположит, что класс в вашем в настоящее время используемом пространстве имен.

Вот почему вы получили ошибку (на посту Серэда)

Catchable Fatal Error: Argument 1 passed to
Baza\BlogBundle\Form\filterType::__construct()
must be an instance of Baza\BlogBundle\Form\EntityManager [...]

Поскольку вы не включали EntityManager PHP, предполагает, что это - класс в вашем текущем пространстве имен, которое было Baza\BlogBundle\Form .


Забавно выглядящий Класс EntityManager50ecb6f979a07_546a8d27f194334ee012bfe64f629947b07e4919 \__ CG __\Doctrin  e\ORM\EntityManager является прокси-классом Doctrine2.

Since Symfony 2.1, calling $this->getDoctrine()->getEntityManager() no lonoger results in a Doctrine\ORM\EntityManager but a proxy class which in fact behaves just like the original EntityManager and can be passed without problems.

3
добавлено
В моем примере кода я использовал $this-> их . Кажется, что вы случайно используемый <кодируете> $this->$em (с $ перед их ), который ищет названную переменную $em , и использует его стоимость в качестве имущественного названия $this . Как вы didn' t определяют $em , PHP пытается получить доступ $this-> пустой указатель (более или менее). Получить доступ к собственности использования объекта $object-> собственность так в этом случае $this-> их .
добавлено автор flu, источник
Решенная проблема, еще раз спасибо.
добавлено автор Xardas, источник

Символ необходим, чтобы указать, что аргумент - обслуживание. Однако как вы узнали, сбивает с толку yaml анализатор. Решение состоит в том, чтобы использовать кавычки.

services:
    filterType:
        class: Baza\BlogBundle\Form\filterType
        arguments: ['@doctrine.orm.entity_manager']

Я помню его берущий меня несколько часов, чтобы понять это также.

1
добавлено
Спасибо за ответ. Ошибка изменилась на: Аргумент 1 прошел к... filterType:: __ конструкция() должна быть случаем Baza\BlogBundle\Form\EntityManager, случаем EntityManager50ec... 919 \__ CG __\Doctrine\ORM\EntityManager данный I' m мимолетный аргумент в моем диспетчере как это: $em = $this-> getDoctrine ()-> getEntityManager (); $form = $this-> createForm (новый filterType ($em), $enquiry); , Что я пропускаю?
добавлено автор Xardas, источник
Первая ошибка говорила что я didn' t передают любые аргументы: ни одно данное , и теперь it' s говорящий, что передаваемый аргумент неправильный: случай EntityManager50ec... 919 \__ CG __\Doctrine\ORM\EntityManager данный . Вторая часть сообщения об ошибке отличается.
добавлено автор Xardas, источник
Это - полное сообщение об ошибке: Фатальная ошибка Catchable: Аргумент 1 прошел к Baza\BlogBundle\Form\filterType:: __ конструкция() должна быть случаем Baza\BlogBundle\Form\EntityManager, случаем EntityManager50ecb6f979a07_546a8d27f194334ee012bfe64f629947b‌​07e4919\__CG__\Doctr‌​ine\ORM\EntityManage‌​r, данного, названного в C:\xampp\htdocs\baza\src\Baza\BlogBundle\Controller\PageCont‌​roller.php на линии 230 и определенный в C:\xampp\htdocs\baza\src\Baza\BlogBundle\Form\filterType.php линии 18
добавлено автор Xardas, источник
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

symfony
symfony
1 045 участник(ов)

Сообщество Symfony, Symfony Components, Symfony Framework. Вакансии: https://t.me/symfony_careers Официальный slack: https://symfony.com/slack-invite

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

symfony
symfony
354 участник(ов)

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp