Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][Symfony2][SF2] MediaBundle+AdminBundle
Foxx
post 19.09.2013, 15:25:17
Post #1





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


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.


Ten post edytował Foxx 19.09.2013, 15:46:11
Go to the top of the page
+Quote Post
mimol
post 19.09.2013, 20:04:15
Post #2





Grupa: Zarejestrowani
Postów: 247
Pomógł: 5
Dołączył: 10.12.2007

Ostrzeżenie: (0%)
-----


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;


Ten post edytował mimol 19.09.2013, 20:45:33
Go to the top of the page
+Quote Post
Foxx
post 20.09.2013, 17:20:16
Post #3





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mimol
post 20.09.2013, 17:22:49
Post #4





Grupa: Zarejestrowani
Postów: 247
Pomógł: 5
Dołączył: 10.12.2007

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 22.06.2025 - 21:49