Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wczytywanie skryptu phtml do zmiennej
Forum PHP.pl > Forum > PHP
MikroUser
Problem natury:

plik.phtml
  1. <div>
  2. <? echo 'plik.phtml'; ?>
  3. </div>


index.php
  1. $content = file_get_contents('plik.phtml');
  2. echo $content;


niestety funkcja file_get_contents wczytuje zawartość pliku, a nie wykonuje jej dlatego wynik jest oczywisty:
  1. <div>
  2. <? echo 'plik.phtml'; ?>
  3. </div>


Celem jest aby wynik był postaci:
  1. <div>
  2. plik.phtml
  3. </div>


Jak tego dokonać?

PS. Co już sprawdziłem:
  • include_once() - wyświetla zawartość pliku i zwraca '1'
  • file() - wczytuje zawartość pliku, ale nie wykonuje jej
  • wykonanie pliku na zasadzie file_get_contents('http://www.example.com/plik.phtml'); nie wchodzi w grę
  • próbowałem się przegrzebać przez ZEND_VIEW, ale się pogubiłem w klasach i straciłem tylko czas.
  • jak na razie korzystam z rozwiązania:
    plik.phtml
    1. return '<div>'.$zmienna.'</div>'

    ale robi się to kłopotliwe przy dużej ilości htmla.

dziękuję za pomoc.
Noidea
Cytat
wykonanie pliku na zasadzie file_get_contents('http://www.example.com/plik.phtml'); nie wchodzi w grę


To jest chyba najrozsądniejsze rozwiązanie, jeśli chodzi o pobranie wyniku działania skryptu PHP. Jeśli "nie wchodzi w grę", bo nie masz uprawnień do pobierania plików z zewnątrz (allow_url_fopen), to spróbuj użyć curl albo fsockopen.

Inne możliwości:
1. Z użyciem buforowania wyjścia.
  1. <?php
  2.  
  3.  
  4. include "plik.phtml";
  5. $var = ob_get_contents();
  6.  
  7. echo "Zawartość zmiennej: " . $var;
  8.  
  9. ?>


2. eval
  1. <?php
  2.  
  3. $content = file_get_contents( "plik.phtml" );
  4. $var = eval( "?>" . $content );
  5.  
  6. echo "Zawartość zmiennej: " . $var;
  7.  
  8. ?>
MikroUser
Noidea rozwiązanie 1 działa poprawnie.

1) możesz jedynie przybliżyć jakie są zagrożenia takiego rozwiązania i jakie są wady? bo nie mogę się doszukać.
2) dlaczego rozwiązanie file_get_contents('http://www.example.com/plik.phtml') jest najrozsądniejsze? co za tym przemawia?

dzięki.
posiadacz
Jeśli pracujesz nad systemem szablonów to radzę przygotować np w tablicy listę nazw plików do wczytania i zrobić include na samym końcu skryptu.
Według mnie tak będzie znacznie prościej i ładniej.
MikroUser
Rozwiązanie z tablicą może i sensowne, ale teraz chcę zrozumieć wady i zalety obu rozwiązań (za tablicą i z ob_start(); ).

Ktoś jest w stanie je wyjaśnić?
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.