Не удалось загрузить тип sonata_media_type: класс не существует

Здравствуйте, я впервые использую SonataMedia Bundle, но не могу получить ссылку на свой пост; мне выдает # "Не удалось загрузить тип "sonata_media_type": класс не существует. "# вот мой код: Config.php

    sonata_media:
        db_driver: doctrine_orm 
        default_context: default
        contexts:
            Post:
                providers:
                    - sonata.media.provider.image

                formats:
                    small: { width: 100 , quality: 70}
                    big:   { width: 1680 , quality: 100}



**PostType:**


public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('media', 'sonata_media_type', array(
                     'provider' => 'sonata.media.provider.image',
                     'context'  => 'post'
            ));
    }
**My Class Post**



class Post
    {
        /**
         * @var int
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;


        /**
         * @var \Application\Sonata\MediaBundle\Entity\Media
         * @ORM\ManyToOne(targetEntity="Application\Sonata\MediaBundle\Entity\Media", cascade={"persist"})
         */
        protected $media;


        /**
         * Get id
         *
         * @return int
         */
        public function getId()
        {
            return $this->id;
        }

        /**
         * @param MediaInterface $media
         */
        public function setMedia(MediaInterface $media)
        {
            $this->media = $media;
        }

        /**
         * @return MediaInterface
         */
        public function getMedia()
        {
            return $this->media;
        }

    }

Для этого я следовал этой документации: [https://sonata-project.org/blog/2013/10/11/mediabundle-mediatype-improved][1] Пожалуйста, как я могу правильно связать свою публикацию с объектным медиа???


person Saida Bellahrach    schedule 11.01.2018    source источник


Ответы (2)


Вместо этого вы должны использовать полное имя класса MediaType::class, как вы это делаете в любой форме Symfony, начиная с версии 2.8:

**PostType:**


    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('media', MediaType::class, array(
                     'provider' => 'sonata.media.provider.image',
                     'context'  => 'post'
            ));
    }
person Pavel Alazankin    schedule 29.01.2018

Возможно, вы забыли добавить этот класс использования в свой formBuilder.

use Sonata\MediaBundle\Form\Type\MediaType;
person Theva    schedule 17.08.2018