Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][SF2][Symfony2]SonataAdminBundle, dodanie pola ManyToOne do klasy admina
Crash89
post 9.03.2018, 15:49:03
Post #1





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

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


Chciałbym dodać pole product do innego Entity w klasie Admin do SonataAdmin Bundle, ale nie działa to poprawnie.

To jest kod :

  1. class Admin {
  2. protected function configureFormFields(FormMapper $formMapper)
  3. {
  4. $formMapper->with('Rabat', array('class' => 'col-lg-6'))
  5. ->add('name', 'text')
  6. ->add('product', 'entity', [
  7. 'class' => 'AppBundle:Product',
  8. 'property_path' => 'name',
  9. 'multiple' => false,
  10. 'required' => false,
  11. 'empty_data' => null
  12. ])
  13. ->end();
  14. }
  15. }
  16.  
  17. class Rabat {
  18.  
  19. /**
  20.   * @var
  21.   *
  22.   * @ORM\ManyToOne(targetEntity="product", inversedBy="rabats")
  23.   * @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=true)
  24.   *
  25.   */
  26. protected $product = null;
  27.  
  28.  
  29. }
  30.  
  31.  
  32.  


Problem polega na tym, że gdy dodam pole product jako sonata_type_model to wyświetla tylko label bez select boxa.
A kiedy ustawie te pole na typ entity, to nie mogę tego pola dodać jako null w formularzu admina i kiedy wybiorę jakis product to walidację przechodzi, ale w tabeli rabat pole product_id jest ustawione na null a w polu name jest ustawiane pole name z produktu.
Prosze o pomoc.

Ten post edytował Crash89 9.03.2018, 15:54:44
Go to the top of the page
+Quote Post
Pilsener
post 9.03.2018, 19:37:29
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


A jaki efekt chcesz uzyskać?
Jeśli chcesz ustawić productId, to usuń właściwość property_path (masz ustawione na name, więc logiczne, że ustawia name dla rabat)
Jeśli chcesz mieć możliwość ustawienia null, to trzeba dodać placeholder (np. "please choose", "no selection" " -- " czy coś w tym stylu).

Wszystko jest w dokumentacji opisane. I tak w ogóle, Rabat to stolica Maroka Lkingsmiley.png
Go to the top of the page
+Quote Post
Crash89
post 10.03.2018, 13:27:55
Post #3





Grupa: Zarejestrowani
Postów: 191
Pomógł: 7
Dołączył: 3.04.2013

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


Cytat(Pilsener @ 9.03.2018, 19:37:29 ) *
A jaki efekt chcesz uzyskać?
Jeśli chcesz ustawić productId, to usuń właściwość property_path (masz ustawione na name, więc logiczne, że ustawia name dla rabat)
Jeśli chcesz mieć możliwość ustawienia null, to trzeba dodać placeholder (np. "please choose", "no selection" " -- " czy coś w tym stylu).

Wszystko jest w dokumentacji opisane. I tak w ogóle, Rabat to stolica Maroka Lkingsmiley.png


działa, dzięki.
Go to the top of the page
+Quote Post
franki01
post 25.03.2018, 00:51:20
Post #4





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Tak btw. Wystarczy taka deklaracja:

  1. $formMapper->with('Rabat', array('class' => 'col-lg-6'))
  2. ->add('name', 'text')
  3. ->add('product', null, [
  4. 'required' => false,
  5. ])
  6. ->end();


Sonata sobie poradzi i zrobi z tego select do wyboru produktu na podstawie adnotacji w entity.
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 - 16:46