Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP][SYMFONY] Generowanie formularza encji + zapis do bazy
Adis92
post
Post #1





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

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


Witam,
Tworzę stronę opartą o framework Symfony 3.0 i dotarłem do momentu, w którym nie za bardzo wiem jak go rozwiązać.

Przykładowo: mam takie encje
AbstractTaxonomy:
  1. abstract class AbstractTaxonomy
  2. {
  3. /**
  4. * @ORM\Id
  5. * @ORM\Column(type = "integer")
  6. * @ORM\GeneratedValue(strategy = "AUTO")
  7. */
  8. private $id;
  9.  
  10. /**
  11. * @ORM\Column( type = "string", length = 240)
  12. */
  13. private $name;
  14. }

Params:
  1. class Params extends AbstractTaxonomy
  2. {
  3. /**
  4. * @ORM\Column( type = "string", length = 240)
  5. */
  6. private $type;
  7.  
  8. /**
  9. * @ORM\OneToMany(targetEntity = "ParamsValue", mappedBy = "params")
  10. */
  11. private $value;
  12.  
  13. /**
  14. * @ORM\OneToMany(targetEntity = "OfferParams", mappedBy = "params")
  15. */
  16. private $offer;
  17. }

ParamsValue:
  1. class ParamsValue extends AbstractTaxonomy
  2. {
  3. /**
  4. * @ORM\ManyToOne(targetEntity = "Params", inversedBy = "value")
  5. * @ORM\JoinColumn(name = "id_params", referencedColumnName = "id")
  6. */
  7. private $params;
  8.  
  9. /**
  10. * @ORM\OneToMany(targetEntity = "OfferParams", mappedBy = "paramsValue")
  11. */
  12. private $offer;
  13. }

Offer:
  1. class Offer extends AbstractTaxonomy
  2. {
  3. /**
  4. * @ORM\OneToMany(targetEntity = "OfferParams", mappedBy = "offer")
  5. */
  6. private $offerParams;
  7. }

OfferParams:
  1. class OfferParams
  2. {
  3. /**
  4. * @ORM\ManyToOne(targetEntity = "Offer", inversedBy = "offerParams")
  5. * @ORM\JoinColumn(name = "id_offer", referencedColumnName = "id")
  6. */
  7. private $offer;
  8.  
  9. /**
  10. * @ORM\ManyToOne(targetEntity = "Params", inversedBy = "offer")
  11. * @ORM\JoinColumn(name = "id_params", referencedColumnName = "id")
  12. */
  13. private $params;
  14.  
  15. /**
  16. * @ORM\ManyToOne(targetEntity = "ParamsValue", inversedBy = "offer")
  17. * @ORM\JoinColumn(name = "id_params_value", referencedColumnName = "id")
  18. */
  19. private $paramsValue;
  20. }


Chciałbym wygenerować teraz formularz dodania nowego rekordu dla encji Offer zakładając, że baza danych zawiera odpowiednio wartości:

Params:
  1. +-------+------------------+
  2. | id | name |
  3. +-------+------------------+
  4. | 1 | Stan |
  5. | 2 | Przeznaczenie |
  6. +-------+------------------+


ParamsValue:
  1. +-------+------------------+----------------+
  2. | id | name | id_params |
  3. +-------+------------------+----------------+
  4. | 1 | Nowe | 1 |
  5. | 2 | Używane | 1 |
  6. | 3 | Kuchnia | 2 |
  7. | 4 | Łazienka | 2 |
  8. +-------+------------------+----------------+


Jedyne rozwiązanie jakie przychodzi mi do głowy to pobranie dostępnych parametrów wraz z ich wartościami w kontrolerze i przekazanie do widoku gdzie przy użyciu pętli wygeneruje odpowiednie pola formularza np: select. Następnie podczas dodawania ogłoszenia do bazy ręcznie pobiorę wybrane wartości i dodam je do encji offerParams. Zastanawiam się czy by można było wykonać to przy pomocy formBuildera ewentualnie jakiś inny sensowny i bezpieczny sposób?

Ten post edytował Adis92 13.05.2016, 13:30:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
kapslokk
post
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Wydaje mi się, że jak dobrze pokombinujesz z Form Collections to się uda, ale nie jestem pewien (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
LowiczakPL
post
Post #3





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


a to nie robi się komendą w stylu

php app/console generate:doctrine:form AcmeBlogBundle:Post
Go to the top of the page
+Quote Post
Fred1485
post
Post #4





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Nie wiem czy cię dobrze zrozumiałem ale nie musisz w pętli generować selecta. Masz gotowy typ http://symfony.com/doc/current/reference/f...pes/entity.html
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 15.10.2025 - 12:12