Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Symfony4] Jak wyświetlić kilka szablonów twig w jednej metodzie w kontrolerze
Forum PHP.pl > Forum > PHP > Frameworki
thepiotr
Chodzi mi o coś takiego:
  1. echo $this->render('strona/header.html.twig');
  2. echo $this->render('podstrona/index.html.twig');
  3. echo $this->render('strona/footer.html.twig');


Jednakże z echo występuje błąd "The controller must return a "Symfony\Component\HttpFoundation\Response" object but it returned null. Did you forget to add a return statement somewhere in your controller?"
A jeśli zamiast ostatniego echo dam return, czy to będzie dobrze? (wtedy niby nie ma tego błędu)
No ale może też jest jakiś prostszy sposób żeby to zrobić?
Lord
Cytat(thepiotr @ 28.01.2019, 11:28:34 ) *
Chodzi mi o coś takiego:
  1. echo $this->render('strona/header.html.twig');
  2. echo $this->render('podstrona/index.html.twig');
  3. echo $this->render('strona/footer.html.twig');


Jednakże z echo występuje błąd "The controller must return a "Symfony\Component\HttpFoundation\Response" object but it returned null. Did you forget to add a return statement somewhere in your controller?"
A jeśli zamiast ostatniego echo dam return, czy to będzie dobrze? (wtedy niby nie ma tego błędu)
No ale może też jest jakiś prostszy sposób żeby to zrobić?


tak dziwnie z tymi szablonami ogólnie to raczej po stronie twiga powinno sie "łaczyć" różne szablony a jak chcesz coś nadpisać w szablonie to masz extends
https://twig.symfony.com/doc/2.x/tags/include.html
https://twig.symfony.com/doc/2.x/tags/extends.html
sabat24
Na siłę możesz zrobić coś takiego (nie testowałem tego, ale na oko powinno działać)
  1. $html = $this->render('strona/header.html.twig')->getContent();
  2. $html .= $this->render('podstrona/index.html.twig')->getContent();
  3. $html .= $this->render('strona/footer.html.twig')->getContent();
  4.  
  5. $response = new Response();
  6. $response->setContent($html);
  7. return $response;
ohm
Zadnego echo, zadnego renderowania po kawałku, robisz w twigu główny szablon (np base.html.twig) i w nim wrzucasz wszystkie rzeczy które są Ci potrzebne w blokach, czyli np header, body, footer. Następnie zwracasz na danej akcji return $this->render('podstrona.html.twig') i w podstrona.html.twig robisz zwykly extend do base.html.twig, nastepnie nadpisujesz block body.
Trochę to może się wydawać niezbyt jasne jeśli nie miałeś styczności z twigiem, ale ogólnie wszystko co potrzebne masz w
https://symfony.com/doc/current/templating/inheritance.html i https://symfony.com/doc/current/templating.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.