Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP][SYMFONY] Generowanie formularza encji + zapis do bazy
Forum PHP.pl > Forum > Przedszkole
Adis92
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?
kapslokk
Wydaje mi się, że jak dobrze pokombinujesz z Form Collections to się uda, ale nie jestem pewien biggrin.gif
LowiczakPL
a to nie robi się komendą w stylu

php app/console generate:doctrine:form AcmeBlogBundle:Post
Fred1485
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
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.