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

Symfony - tworzenie formularzy

VPS Starter Arubacloud
0 głosów
255 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ź 162 wizyt
pytanie zadane 16 grudnia 2018 w HTML i CSS przez Andrzej Czarny Użytkownik (720 p.)
0 głosów
1 odpowiedź 443 wizyt
+1 głos
1 odpowiedź 234 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...