Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]Renderowanie form w twig ?
Forum PHP.pl > Forum > PHP > Frameworki
Szymciosek
Witam, tak jak w temacie, czy da się wyrenderować formularz bezpośrednio w twig ? Chodzi o fakt, że mam teraz tak skonfigurowane wszystko, że dodaje plik json i plik html.twig o konkretnej nazwie i potrzebuję mieć 2 formularze w osobnych twigach.
Czytałem, że mógłbym skorzystać z plików php, ale wtedy gorzej mi się rozszerza php o twig... Nie ma renderowania tylko wychodzi tak jak jest np:
Kod
<a title="Home" href="index.html"><img src="{{ vars.logo }}">Home</a>


nie podstawi mi adresu do logo tylko wyświetli vars.logo w tym miejscu...
Nie chcę też za dużo kombinować, formbuilder też nie za bardzo wchodzi w grę, bo nie będzie późniejsze ingerencji w kontroler, dlatego też wszystko musi odbyć się po stronie widoku.
ohm
Możesz coś jaśniej? Bo nie mogę załapać koncepcji wink.gif

Cytat
czy da się wyrenderować formularz bezpośrednio w twig ?

Bezpośrednio czyli jak?

Jakiś kawałek przykładowego kodu?
usb2.0
przykładowo jeśli tworzysz formularz oparty o baze to możesz go wygenerować przez cmd
i taki formularz nie siedzi w kontrolerze tylko w oddzielnym pliku więc w kontrolerze nie grzebiesz
a co do "bezpośredniego" to chodzi o to? http://symfony.com/doc/current/book/forms....m-in-a-template
w akcji zwracasz formularz->getForm() zdaje sie i jak w dokumentacji
Szymciosek
No tak, patrzyłem na ten przykład z dokumentacji, ale problem jest inny, bo to co podałeś usb, to z góry jest narzucony formularz, który jak mi się wydaje jest wysyłany do twig i tam mogę go sobie ustawić.
Mi chodzi o rozwiązanie bardziej automatyczne.

Może napiszę jakbym chciał żeby to wyglądało:
Mam kontroler, który nie będzie miał z tym nic wspólnego, on tylko mi ładuje plik np. kontakt_pl.html.twig, w którym chciałbym mieć np.
Kod
tutaj gdzieś chciałbym mieć php, który odbierze mi te dane po odświeżeniu (tzn po kliknięciu w przycisk WYŚLIJ).
<?php
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];

//jeśli się zgadza wszystko to wyślij.
?>

{% extends ('::base.html.twig') %}

{% block body %}
###
<form action="" method="post">
    Adres e-mail<input type="text" name="email" /><br />
    Temat<input type="text" name="subject" /><br />
    Wiadomość<textarea...></textarea>
</form>
###
{% endblock %}


Chciałbym mieć to tak rozwiązane, ponieważ widoków z formularzem może być więcej.
W kontrolerze mam jedną metodę, która w zależności od języka strony i od slug ładuje mi konkretną podstronę i konkretny plik json, który trzyma potrzebne do wyświetlenia dane (edytowalny z poziomu administratora).

//EDIT
W sumie teraz po rozmowie ze znajomym jest tak, że mają być tylko i wyłącznie 2 formularze bez możliwości dodania kolejnych, kolejne mogę dodać tylko ja. Więc myślę, że kontroler będzie dobrym miejscem na przetrzymanie informacji o tym.

//EDIT2
Jeszcze jest sprawa języka.
Formularze na tą chwilę będą 2, dla pl i en i owszem mogę stworzyć jest na sztywno i wybierać w zależności od języka strony, ale co, gdy będzie ktoś sobie chciał dodać język DE, tutaj znowu ja bym musiał dodawać taki form w kontrolerze... co nie wchodzi w grę za bardzo, bo ma wszystko być niezależne ode mnie.
thek
A to nie prościej w tym akurat przypadku skorzystać z translacji? smile.gif
Szymciosek
A co z resztą?
Całe renderowanie tego widoku jak zrobić?

Translacje, masz na myśli translatable? Jeśli tak, to niestety, ale nie korzystam z bazy danych, działamy w tym przypadku na plikach json.
thek
A kto powiedział,że jedyne translacje są w oparciu o bazę? wink.gif http://jmsyst.com/bundles/JMSTranslationBundle i popatrz sobie oraz użyj lub znajdź lepiej pasujący bundle.Cp do formularzy... Można do twiga include'ować inne twigi. Nawet ze zmiennymi smile.gif Może o to Ci chodzi? http://twig.sensiolabs.org/doc/tags/include.html zwłąszcza opcja z użyciem WITH
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.