Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][Symfony2][SF2] MediaBundle+AdminBundle
Forum PHP.pl > Forum > PHP > Frameworki
Foxx
Mam zainstalowany Sonata Admin Bundle i Media Bundle. Chciałbym je zintegrować, ale nie dość, że nie wiem jak to jeszcze nie wiem jakiego rodzaju to może być integracja. Dokumentacja tego teoretycznie jest: http://sonata-project.org/bundles/media/ma...ia_context.html ale jest dla mnie niezrozumiała i nie mogę znaleźć nigdzie spójnej informacji:

1. W jaki sposób opisać encję np. Produkt, któremu chciałbym dołączać jedno zdjęcie?

2. W jaki sposób opisać taką encję, gdybym chciał żeby produkt miał wiele zdjęć?

3. A gdyby miał mieć dokładnie 3 zdjęcia?

Czy powinienem zrobić pole image i ustawić relację OneToOne lub ManyToOne do obiektu Media?
A może do obiektu Gallery? Do czego właściwie służy ta Gallery?

Dodam jeszcze, że obecny stan wygląda tak, że dodałem pole $image do obiektu Category:
  1. /**
  2.  * @ORM\Column(type="string", length=255)
  3.  */
  4. private $image;


W Admin/CategoryAdmin.php konfiguruję pole w taki sposób:
  1. ->add('image', 'sonata_media_type', array(
  2. 'provider' => 'sonata.media.provider.image',
  3. 'context' => 'default',
  4. 'data_class' => 'Application\Sonata\MediaBundle\Entity\Media',
  5. 'required' => false,
  6. 'label' => 'Image'
  7. ))


I wyświetla mi się formularz poprawnie, z polem typu file dla $image, ale po zapisaniu formularza otrzymuję:

Kod
The form's view data is expected to be an instance of class Application\Sonata\MediaBundle\Entity\Media, but is a(n) string. You can avoid this error by setting the "data_class" option to null or by adding a view transformer that transforms a(n) string to an instance of Application\Sonata\MediaBundle\Entity\Media.
mimol
Jesli chesz mieć 1 obrazek
  1. ->add('media', 'sonata_type_model', array(), array('link_parameters' => array(
  2. 'context' => 'cover',
  3. 'provider' => 'sonata.media.provider.image'
  4. )
  5. ))


Dla wielu
  1. ->add('gallery', 'sonata_type_model')


W encji mapowanie

  1. /**
  2.   * @var \Application\Sonata\MediaBundle\Entity\Media
  3.   * @ORM\OneToOne(targetEntity="\Application\Sonata\MediaBundle\Entity\Media")
  4.   */
  5. private $media;
  6.  
  7. /**
  8.   * @var \Application\Sonata\MediaBundle\Entity\Gallery
  9.   * @ORM\OneToOne(targetEntity="\Application\Sonata\MediaBundle\Entity\Gallery")
  10.   * @ORM\JoinColumn(name="gallery_id", referencedColumnName="id", nullable=false)
  11.   */
  12. private $gallery;
Foxx
Dzięki! To mi bardzo pomogło.

Czy relacja OneToOne zarówno do pojedynczego obrazka jak i do galerii jest na pewno właściwa? To sprawia, że nie można przypiąć jednej galerii do kilku newsów. Ustaliłem relacje ManyToOne i wydaje się działać nieźle...

Dzięki raz jeszcze.
mimol
to już zależy od ciebie. Ja rozwiązałem to tak, bo każda moja encja (film) miał jedną osobna galerię z kilkoma zdjęciami
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.