Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony][Symfony4] Jak wyświetlić kilka szablonów twig w jednej metodzie w kontrolerze
thepiotr
post 28.01.2019, 10:28:34
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 2
Dołączył: 2.07.2014

Ostrzeżenie: (0%)
-----


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ć?
Go to the top of the page
+Quote Post
Lord
post 28.01.2019, 10:49:47
Post #2





Grupa: Zarejestrowani
Postów: 194
Pomógł: 29
Dołączył: 10.03.2004

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
sabat24
post 28.01.2019, 11:22:21
Post #3





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


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;
Go to the top of the page
+Quote Post
ohm
post 28.01.2019, 20:40:00
Post #4





Grupa: Zarejestrowani
Postów: 507
Pomógł: 124
Dołączył: 22.12.2010

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 22.07.2019 - 22:17