Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]TWIG problem
-Analka-
post
Post #1





Goście







Witam

Niemogę poradzić sobię z funkcją extend w TWIGu.

Struktura:

templates/
---default/
-------index.html
-------demo.html
-------footer.html
---oragneblue/
index.php

index.html:
  1. {% block footer %} {% endblock %}


footer.hml:
  1. {% extends "index.html" %}
  2.  
  3. {% block footer %}
  4.  
  5. (c) {{ "now"|date("Y") }}
  6.  
  7. {% endblock %}


i nic nie wyświetla gdy wejdę na strone główną tzn nie wyświetla stopki. I tu pytanie jak to załadować czy źle korzystam z extend? J
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
Pyton_000
post
Post #2





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

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


Zamień te 2 pliki zawartością między sobą.
Go to the top of the page
+Quote Post
-analka-
post
Post #3





Goście







to w takim razie po co mi w footer czysty plik, chciałem odwołać się do index i tam wrzucić stopke poprzez tzw. moduł
Go to the top of the page
+Quote Post
toffiak
post
Post #4





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

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


Jeżeli stopka jest stała a zazwyczaj jest a twoim głównym plikiem jest index.html to plik stopki nie powinien zawierać żadnych bloków tylko sam kod html-owy, w pliku index.html użyj "include" do dodania zawartości tego pliku.


--------------------
Go to the top of the page
+Quote Post
-analka-
post
Post #5





Goście







No teoretycznie się zgadza, lecz chciałem się dowiedzieć jak działa te extends i block i móc tworzyć fajne moduły.

Ale fakt faktem że nie chce mi działać na przykładzie stopki.
Include już używam to wczytywania treści podstron.

Go to the top of the page
+Quote Post
werdan
post
Post #6





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

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


Musisz zrobic odwrotnie, jak pisał kolega powyzej.

base.html
  1. <!DOCTYPE html>
  2. <head>
  3. <link rel="stylesheet" href="style.css" />
  4. <title>{% block title %}{% endblock %} - My Webpage</title>
  5. </head>


child.html
  1. {% extends "base.html" %}
  2. {% block title %}Index{% endblock %}


Go to the top of the page
+Quote Post
-anelka-
post
Post #7





Goście







Cytat(werdan @ 16.12.2013, 13:33:20 ) *
Musisz zrobic odwrotnie, jak pisał kolega powyzej.

base.html
  1. <!DOCTYPE html>
  2. <head>
  3. <link rel="stylesheet" href="style.css" />
  4. <title>{% block title %}{% endblock %} - My Webpage</title>
  5. </head>


child.html
  1. {% extends "base.html" %}
  2. {% block title %}Index{% endblock %}



a czym różni się twój sposób od przedstawionego mojego? prócz tego że mamy inne nazwy bloków i plików? :/
Go to the top of the page
+Quote Post
werdan
post
Post #8





Grupa: Zarejestrowani
Postów: 354
Pomógł: 100
Dołączył: 14.11.2013
Skąd: Płock

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


Heh. No fakt. W sumie to samo biggrin.gif

Ale wchodzisz na index, a zrobiłeś jakbyś chciał wejsc na footer.
Go to the top of the page
+Quote Post
-analka-
post
Post #9





Goście







index.php
  1. $loader = new Twig_Loader_Filesystem('./templates/'.$get_config[layout]);
  2. $twig = new Twig_Environment($loader, array(
  3. // 'cache' => 'cache', //Możliwość cachowania
  4. 'auto_reload' => true
  5. ));
  6. $template = $twig->loadTemplate($get_config['default_page'])


Myślałem że on wczytuje all pliki z danego folderu i łączy je jak mają extends bloki. Czy tak nie jest?


Jeżeli nawet podstrony to i tak jak wejdę na podstronę demo.html i umieszczę tam extends to mam błąd:
  1. Fatal error: Uncaught exception 'Twig_Error_Syntax' with message 'A template that extends another one cannot have a body in "demo.html" at line 1.' in
więc zapewne nie tędy droga.. :/ może źle wczytuje pliki w index.php?
Go to the top of the page
+Quote Post
-analka-
post
Post #10





Goście







API dokumentacja:
http://twig.sensiolabs.org/doc/tags/extends.html


próbowałem już wszystkiego i niewiem czemu to nie chce działać sad.gif
Go to the top of the page
+Quote Post
toffiak
post
Post #11





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

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


Piku demo.html powinien wyglądać mniej więcej tak:
  1. {% extends "index.html" %}
  2.  
  3. {% block blok_ktory_chcesz nadpisać_z_layout.html %}
  4. {# Treść #}
  5. {% endblock %}


i wywołujesz go poprzez plik demo.html, wtedy odczytany zostaje plik demo.html, ponieważ zawiera on deklarację extends pobrany zostanie najpierw plik index.html i zbudowane dla niego drzewo bloków, następnie powracamy do pliku demo.html i zastępujemy blok: "blok_ktory_chcesz nadpisać_z_layout.html" tym z demo.html.

Plik index.html musi mieć blok: "blok_ktory_chcesz nadpisać_z_layout.html" aby można go było nadpisać.

Ten post edytował toffiak 16.12.2013, 15:51:25


--------------------
Go to the top of the page
+Quote Post
agterpan
post
Post #12





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 16.12.2013

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


~/public_html/zf$ zf create module FormExample
-bash: zf: nie znaleziono polecenia

Co to jest za błąd i jak jego eventualnie usunąć?(Instalacja Zend Framework z konsoli).
Go to the top of the page
+Quote Post
-analka-
post
Post #13





Goście







To chyba miałem złe podejśćie..


index.html:
  1. {% if page_mysql['type'] == 1 %}
  2. {% include page_mysql.dir %}
  3. {% else %}


Tak ładowałem do treści strony inne pliki szablonów..

Myślałem że mogę to podzielić na moduły czy bloki i fajnie mieć posegregowane :/
Muszę dokładnie zaplanować jak zrobić podstrony z tym TWIG bo miałem zły koncept i się nie udał sad.gif
Go to the top of the page
+Quote Post
-analka-
post
Post #14





Goście







Dobra dzięki smile.gif Rozkminiłem jak to zrobić i jak to działa smile.gif

Dziękuje wam za pomoc i pozdrawiam!
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 Aktualny czas: 20.08.2025 - 23:21