• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Twig konfiguracja

VPS Starter Arubacloud
0 głosów
683 wizyt
pytanie zadane 26 czerwca 2018 w PHP przez SoDoIt Obywatel (1,190 p.)
zamknięte 27 czerwca 2018 przez SoDoIt

Witam, mam problem z konfiguracją Twiga. Zamiast strony wyświetla się kod frown php.

Struktura Projektu: 
template (to chce dołączyć do każdego z plików w katalogu src)
      nagłówek.html

      stopka.html

src(tu trzymam stronę główną, podstrony, pliki css)

      index.html

      ...

vendor

      composer

      twig

      symfony

      autoload.php

index.php(tu podobno ustawiam wszystko)

composer.json

composer.lock
 

index.html 

{% extends "nagłówek.html" %}

<div>reszta strony</div>

{% extends "nagłówek.html" %}

index.php

require_once 'vendor/autoload.php';

$loader = new Twig_Loader_Filesystem('template');
$twig = new Twig_Environment($loader);

$template = $twig->load('nagłówek.html', 'stopka.html');

composer.json

{
    "name": "jakub/metalprodukt",
    "authors": [{
        "name": "Jakub",
        "email": "jakub.wolowski568@wp.pl"
    }],
    
    "require": {
        "phpmailer/phpmailer": "^6.0",
        "twig/twig": "^2.4"
    },

    "autoload": {
        "psr-4": {
            "metalprodukt\\": "",
            "Vendor\\": ""
        }
    }
}

autoload.php

<?php

// autoload.php @generated by Composer

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInitb777873bad036e96d12eeb705116e5d7::getLoader();

Pomocy ;

komentarz zamknięcia: problem rozwiązany
komentarz 26 czerwca 2018 przez Mariusz08 Maniak (62,300 p.)
To czasem Twig nie musi mieć rozszerzenia .html.twig?

1 odpowiedź

+1 głos
odpowiedź 26 czerwca 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)
wybrane 27 czerwca 2018 przez SoDoIt
 
Najlepsza
Wchodzisz na jaki plik, index.php? Inny kod PHP działa, tj. jak zrobisz np. pusty plik z echo 'test'; to też pojawi się kod PHP czy tylko napis test?

W index.php nie masz nigdzie wyświetlenia wyrenderowanej templatki. Wywołujesz tylko metodę load(), która nawet jej nie renderuje a tylko coś tam wczytuje. Użyj metody render() i wyświetl to co zwróci. Poza tym wydaje się jakbyś źle używał extends w Twigu, nie wiem co chciałeś osiągnąć, ale tego wystarczy użyć raz, to tylko rozszerza templatkę.
komentarz 26 czerwca 2018 przez SoDoIt Obywatel (1,190 p.)
tak, jak zrobię pusty plik z echo 'test' to pojawia się napis test. Extends to myślałem że ładuję template do tego danego w którym załączam za jego pomocą i wtedy renderuje
komentarz 26 czerwca 2018 przez SoDoIt Obywatel (1,190 p.)
edycja 26 czerwca 2018 przez SoDoIt

zmieniłem rozszerzenia stopki i nagłówka z .html na .html.twig 
zmieniłem plik index.php na 
 

require_once 'vendor/autoload.php';

$loader = new Twig_Loader_Filesystem('template/');
$twig = new Twig_Environment($loader);

$template = $twig->load('nagłówek.html.twig', 'stopka.html.twig');
echo $template->render('nagłowek.html.twig', 'stopka.html.twig');

i nic 

1
komentarz 26 czerwca 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)

Ok, czyli samo PHP działa.

Przede wszystkim nie

echo $template->render(index.html);

a

echo $template->render('index.html');

Po drugie - plik index.html powinien być w folderze templates, albo musisz zmienić ścieżkę w Twig_Loader_Filesystem - on sam nie zgadnie gdzie ten plik jest ;)

Po trzecie to loadTemplate() jest w ogóle niepotrzebne, wystarczy po prostu $twig->render('index.html'). Drugi argument który tam ciągle przekazujesz (stopka.html) nie wiem co ma dać, tam powinna się znaleźć tablica elementów do przekazania na widok jeśli takowe są.

A extends templatkę rozszerza, tzn. mamy np. bazową w której jest podstawowa struktura HTML i blok Twiga o nazwie content. Później robimy templatkę z extends tej pierwszej, definiujemy w niej znów blok content i automatycznie renderuje nam się całość - ten blok jest jakby wklejany w tą bazową. Tu jest to dokładnie opisane: https://twig.symfony.com/doc/2.x/tags/extends.html

komentarz 26 czerwca 2018 przez SoDoIt Obywatel (1,190 p.)
edycja 26 czerwca 2018 przez SoDoIt

index.php 

require_once 'vendor/autoload.php';

$loader = new Twig_Loader_Filesystem('template/');
$twig = new Twig_Environment($loader);

echo $twig->render('index.html.twig');

plik index.html przeniosłem do folderu template i wygląda on tak (no i zmieniłem rozszerzenie na .html.twig
 

{% extends "nagłówek.html.twig" %}
<div>kontent strony</div>
{% extends "stopka.html.twig" %}

hmm
czyli lepiej użyć include ? 
Dobra, jutro to ogarnę w każdym razie już mniej więcej wiem o co chodzi. Dziękuję ślicznie >.< 

1
komentarz 26 czerwca 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)
Wygląda już lepiej. To zależy co chcesz zrobić, domyślam się że po prostu chcesz "wkleić" zawartości nagłówka i stopki w te miejsca i w takiej sytuacji tak, sensowniej użyć include. Chyba że zrobisz jedną bazową templatkę, gdzie będzie już nagłówek i stopka a tylko treść będzie się zmieniała, wtedy możesz rozszerzać.
komentarz 26 czerwca 2018 przez SoDoIt Obywatel (1,190 p.)
tak chce wkleić, a czy potrzebuję w takim razie używać tych całych funkcji twiga czy zwykłe tagi html są ok i będzie działać ?
komentarz 26 czerwca 2018 przez efiku Szeryf (75,160 p.)
Zajrzyj do dokumentacji ...

Przeczytanie ze zrozumieniem przyniesie najlepsze efekty
komentarz 26 czerwca 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)

@SoDoIt, nie rozumiem pytania, zwykłe tagi HTML są ok, ale od tego są różne funkcje i możliwości Twiga jak właśnie include czy extends, aby to jeszcze poprawić i ulepszyć.

komentarz 27 czerwca 2018 przez SoDoIt Obywatel (1,190 p.)
w index.php kiedy wchodzę nadal pokazuję się kod php'a zamiast szablonu xd.
zwykłe tagi są ok, ale teraz pozmieniałem z extends na include, przeszedłem do folderu template na localhoście i tak z ciekawości skomentowałem skrypt przed include i po odświeżeniu wyświetliło mi się to skomentowanie {# #} ta funkcja include, nieostylowana strona i drugie include ;d
1
komentarz 27 czerwca 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)
Jeśli otworzysz sobie ręcznie dany szablon to tak, będzie goły kod i nie będzie to działało. Od tego jest cały Twig i metoda render(), aby to wszystko przygotować, po otwarciu pliku w przeglądarce ona nie wie że z tym coś trzeba zrobić :P

Dziwne natomiast jest to, że po wejściu na index.php jest jakiś kod PHP, to co podałeś we wcześniejszym komentarzu to całość? Jeśli tak to może po prostu brakuje Ci <?php na początku...?
1
komentarz 27 czerwca 2018 przez SoDoIt Obywatel (1,190 p.)
o boże ... mózg nad mózgami .. nie wpisać znaczników <?php ?> w pliku php xd

W KOŃCU DZIAŁA haha. Dziękuję za ocalenie kilku moich dni :D
1
komentarz 27 czerwca 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)
Najprostsze błędy najtrudniej dostrzec ;) Nie ma za co.

Podobne pytania

0 głosów
1 odpowiedź 147 wizyt
pytanie zadane 7 lutego 2021 w PHP przez CSSoup Mądrala (6,460 p.)
+1 głos
1 odpowiedź 155 wizyt
pytanie zadane 19 listopada 2020 w PHP przez Piotr Zakrzewski Obywatel (1,260 p.)
0 głosów
1 odpowiedź 225 wizyt
pytanie zadane 24 maja 2020 w PHP przez azez Użytkownik (690 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...