Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Strona w oparciu o szablony Twiga
Fred1485
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Witam, z góry zaznaczam dwie rzeczy:

1) Podstawy Twiga ogarniam (IMG:style_emoticons/default/wink.gif)
2) Szukałem odpowiedzi na temat w EF oraz PHP by przemo ale nie mogłem się dokopać żeby coś sensownego znaleźć (IMG:style_emoticons/default/wink.gif)

Zakładałem już temat o Twigu, być może byłeś tam i teraz myślisz że jakiś głupek znowu czegoś nie wie (IMG:style_emoticons/default/wink.gif)

--------NIE CHCESZ TO NIE CZYTAJ------------

Problem jest bardziej filozoficzny niż "problemowy" (IMG:style_emoticons/default/biggrin.gif) (IMG:style_emoticons/default/biggrin.gif)

Załóżmy że mam mini projekt a w nim przykładowo:

1- plik szablonu główny -> main.tpl
2- plik szablonu specjalny(załóżmy że od błędów) -> error.tpl
3- plik index.php

W pliku main.tpl

  1. // tu jakieś odwołania do css, meta itp
  2. </head>
  3. //tutaj generowanie treści strony na podstawie index.php
  4. </body>
  5. </html>


W pliku error.tpl

  1. <div class"error">{{error}}</div>


W pliku index.php załóżmy że mam łączenie z bazą czy jakąkoliwek inną operację, w której niespełnienie warunku jest równoznaczne z wygenerowaniem diva z errorem.

Próbuję nawiązać połączenie z bazą -> nie udaje się więc skrypt generuje odpowiednie dane i szablon tworzy odpowiednie dane wyjściowe

Teraz nie mogę najpierw w pliku index.php najpierw wyrenderować szablonu main.tpl a potem error.tpl bo ten error.tpl ma się zawierać w pliku głównym szablonu, da się jakoś zrobić że ten szablon z errorem jeśli wystąpi wkładam pomiędzy ten szablon główny?
Oczywiście jeśli połączenie z bazą się nie uda to die(), więc wykonywanie kodu potem jest niemożliwe (IMG:style_emoticons/default/biggrin.gif)
Mam nadzieję że zrozumieliście mój problem, może nie jest to dla kogoś problem ale dla mnie jakoś nie mogę sobie tego wyimaginować jak to zrobić? (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


http://twig.sensiolabs.org/doc/tags/extends.html
do errorów robisz
if(errors) wyświetl Errory

i normalnie include w main.tpl

Ten post edytował Pyton_000 23.03.2015, 17:53:22
Go to the top of the page
+Quote Post
Fred1485
post
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Że w pliku php czy tpl if(errors)?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


tpl
Go to the top of the page
+Quote Post
Fred1485
post
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


No ok biorę sie za czytanie ale jak na przyklad potem nie wyświetlać reszty szablonu po wystapieniu errora oprocz na przykład stopki?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


aha, ja założyłem że te errory to są typu np. walidacyjne.
Jeśli mają to być typu crash strony to tak jak normalny szablon.

Tam gdzie łapiesz błędy renderujesz po prostu szablon błedu który również jest extended z main.tpl i normalnie wypluwasz.
Go to the top of the page
+Quote Post
Fred1485
post
Post #7





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Niewiele z tego rozumiem (IMG:style_emoticons/default/smile.gif) poczytam najpierw i moze sam do tego dojdę (IMG:style_emoticons/default/smile.gif)

Zrobiłem tak:

index.php

  1. <?php
  2.  
  3. require_once('lib/Twig/Autoloader.php');
  4.  
  5. Twig_Autoloader::register();
  6.  
  7. $loader = new Twig_Loader_Filesystem('templates');
  8. $twig = new Twig_Environment($loader, array( 'auto_reload' => true, 'cache' => 'cache'));
  9. $template = $twig->loadTemplate('template.tpl');
  10.  
  11. echo $template->render(array('title' => 'Tytul strony'));
  12.  
  13. ?>


template.tpl
  1. {% extends "template2.tpl" %}
  2.  
  3. {% block title %}
  4. <div>{{ title }}</div>
  5. {% endblock %}


template2.tpl
  1. <!DOCTYPE HTML>
  2. <meta charset="utf-8" />
  3. <meta name="maki1234" />
  4. <title>Strona-testowa</title>
  5. <link rel="stylesheet" type="text/css" href="style.css" />
  6. </head>
  7. {% if title %}
  8. {% block title %}
  9. {% endblock %}
  10. {% endif %}
  11.  
  12. <div>Jakiś tekst</div>
  13.  
  14. </body>
  15. </html>


Działać działa i to bez problemu ale jak zrobić tak że jak ten if z template się spełni to żeby div potem się już nie wyświetlał np?

Ogólny zamysł jest taki: Header strony zawsze -> content strony w zależności czy jest błąd to błąd lub treść strony -> stopka zawsze

Wymyśliłem sobie że zrobie 3 pliki -> header, treść i stopkę, pierwsze i ostatnie zawsze będę includował a treść w zależności od operacji (IMG:style_emoticons/default/wink.gif)

Ten post edytował Fred1485 23.03.2015, 19:16:07
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


  1. $template = $twig->loadTemplate('template.tpl');
  2.  
  3. echo $template->render(array('title' => 'Tytul strony'));

Tutaj ustalasz który szablon generować, wystarczy zmienić template.tpl na error.tpli po sprawie.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 23:32