• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Symfony - tworzenie formularzy

Object Storage Arubacloud
0 głosów
256 wizyt
pytanie zadane 19 stycznia 2019 w PHP przez niezalogowany

hej, to znowu ja z kolejnym głupim pytaniem :)

Czy ktoś może mi przetłumaczyc na prosty jak to działa?

$form = $this->createForm(AuctionType::class, $auction);

Natomiast createForm zwraca:

return $this->container->get('form.factory')->create($type, $data, $options);

Mam osobą klase z zawartoscią:

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
       $builder
           ->add("title", TextType::class, ['label' => "Tytuł"])
           ->add("description", TextareaType::class, ["label" => "Opis"])
           ->add("price", NumberType::class, ["label" => "Cena"])
           ->add("submit", SubmitType::class, ["label" => "Dodaj aukcje"]);
    }

Metody add() wywołuje na obiekcie FormBuilderInterface ale to interfejs, posiada jedynie deklaracje.

Gdzie odbywa się ten proces tworzenia formularza?
Totalnie tego nie rozumiem.

komentarz 19 stycznia 2019 przez wiktoz Mądrala (7,040 p.)
Pokaż cały kod, bo kawałkami powycinany to ciężko coś Ci będzie wytłumaczyć :)
komentarz 19 stycznia 2019 przez niezalogowany
Mam wstawić komponenty Symfony?
komentarz 19 stycznia 2019 przez wiktoz Mądrala (7,040 p.)

Już znalazłem ten cały przykładowy kod formularza na internecie. 

Pierwszy bloczek, który wkleiłeś odpowiada za utworzenie formularza widocznego dla użytkownika. Tutaj wywołuje się funkcja createForm, która jest opisana w komponentach i dołączana do kodu wcześniej (nie wkleiłeś tego tutaj). To, co zwraca ta funkcja, jest już formularzem. Ta funkcja do zbudowania formularza wykorzystuje oczywiście buildForm, które jest w wywoływanej klasie funkcją. Wcześniej było coś takiego: 

class EventFormType extends AbstractType

Możesz użyć czegoś takiego:

$form = $this->createForm(new EventFormType(), new EventModel());

jest to zamiennikiem zbudowanym bez kontrolera, którego Ty użyłeś wcześniej w Twoim pierwszym bloczku.

Mam nadzieję, że coś zrozumiałeś :)

P.S. Zawsze zobacz co includujesz, bo tam mogą być ukryte te funkcje, których nie rozumiesz.

komentarz 19 stycznia 2019 przez niezalogowany

No funkcje sa ale same deklaracje, bo to interfejsy albo abstrakcje...

Funkcja createForm wyglada tak:

    protected function createForm($type, $data = null, array $options = array())
    {
        return $this->container->get('form.factory')->create($type, $data, $options);
    }

Natomiast samego create() już nie moge znaleźć.

Niestety Twojego tłumaczenia nie zrozumiałem za bardzo :(

 

Coś mi się wydaje, że symfony, cały jej zamysł i sposób w jaki tworzy się aplikację jest zbyt trudna jak na początek.

Teraz właśnie się dowiedziałem że to:

    /**
     * @Route("/auction/{id}", name="auction_details")
     * @param Auction $auction
     */
    public function detailsAction(Auction $auction){
        return $this->render("Auction/details.html.twig", ["auction" => $auction]);
    }

Wykona się dokładnie tak samo jak to:

    /**
     * @Route("/auction/{id}", name="auction_details")
     * @param $id
     */
    public function detailsAction($id){
        $entityManager = $this->getDoctrine()->getManager();
        $auction = $entityManager->getRepository(Auction::class)->findOneBy(['id' => $id]);

        return $this->render("Auction/details.html.twig", ["auction" => $auction]);
    }

tu się za dużo dzieje "pod spodem", cięzko jest zrozumieć programowanie, jezeli tak mało widać. ten framework jak dobrze rozumiem bierze informacje zawarte w php doc'u co jest dla w ogole jakies kosmiczne, bo zawsze myslałem, że to informacje tylko dla uzytkownika IDE oraz dla budowy dokumentacji. A tu prosze framework z nich korzysta.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 164 wizyt
pytanie zadane 16 grudnia 2018 w HTML i CSS przez Andrzej Czarny Użytkownik (720 p.)
0 głosów
1 odpowiedź 458 wizyt
+1 głos
1 odpowiedź 239 wizyt

92,579 zapytań

141,432 odpowiedzi

319,662 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...