Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] input_tag() - dodatkowe pole
Forum PHP.pl > Forum > PHP > Frameworki
SnakeEater
Witam,
mam kolejny mały problem. Mam obiekt Question. W akcji, a raczej w formularzu new chciałem dodać dodatkowe pole, w które będzie się wpisywało ile opcji opcji losowych odpowiedzi chciałbym dla niego wylosować. Question do odpowiedzi jest powiązany w sposób jeden do wielu. Gdzieś znalazłem, że wystarczy dodać w formularzu input_tag(...). Niestety nie działa:
Kod
Call to undefined function input_tag()
Czy to zostało wycofane w Symfony 1.4? Czy zatem prawidłowy sposób teraz to poprzez dodanie tego do schematów widget i validator? Czy da się to zrobić tak, żeby to nie było pole należące do Question czyli question[number_of_options_to_generate] tylko po prostu number_of_options_to_generate? Wolałbym tak, gdyż tworzenie odpowiedzi chyba pasuje zrobić w akcji, a nie w modelu question. Mam nadzieję, że nie będę musiał tworzyć jeszcze jednego nadrzędnego formularza.
destroyerr
Helpery do tworzenia formularzy zostały wycofane. Możesz sobie sam dopisać kawałek html'a wymieszanego z php i mieć to pole, lub widżet i walidator. Walidator (czyli jego tworzenie i walidacja) powinien znaleźć się gdzieś w akcji, to tworzenie widżetu powinno odbyś się w widoku, a wyświetlenie w szablonie.

Nie wiem dokładnie jak ma wyglądać to co chesz zrobić, ale o ile dobrze zrozumiałem, to pole to powinno się znaleźć w formularzu. Formularz nie musi być czystym odzwierciedleniem modelu (obrazem pól w bazie w polach formularza).
Generowanie odpowiedzi to moim zdaniem zadanie właśnie dla modelu, który nie ma być tylko i wyłącznie kontenerem dla danych, powinien je również przetwarzać.
SnakeEater
Dziękuję sporo mi to rozjaśniło. Jeżeli dodam do formularza QuestionForm te pole poprzez dodanie do schematu widgetów i validatorów, to czy znajdzie się te pole w modelu Question w akcji create? Po analizie kodu doszedłem do wniosku, że tylko z pól tabeli można korzystać w modelu. Czy będzie trzeba ręcznie odczytać question['numer_of_options_to_generate'] w akcji i przekazać do stworzonej metody question->generateOptions()?

Obawy potwierdziły się. Zatrzymałem wykonanie kodu i faktycznie pole nie znajduje się w tablicy _data obiektu question. Czy naprawdę nie ma sposobu, żeby te pole znalazło się w modelu podczas akcji create?
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.