Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Smart - proszę spojrzeć w szkielet. Nie wyświetla podstron.
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Panowie z racji tego, że nie ogarnąłem MVC to na chwilę obecną sobie odpuściłem i postanowiłem pisać stronę opartą o smarty.
Zresztą jest to mały serwis logowanie, rejestracja więc zrobię to po staremu - smarty.

  1.  
  2. <?php
  3. define( 'dostep', 1 );
  4. header('Content-Type: text/html; charset=utf-8');
  5. include ("tempp.php");
  6. require_once 'libs/Smarty.class.php';
  7. if (!file_exists('templates/'.$template_name.'/index.tpl')){
  8. echo 'Brak pliku index.tpl lub folderu. Główny plik pownien znajdować się w folderze templates/nazwa_szablonu';
  9.  
  10. }else{
  11.  
  12. $page=basename($_GET['w']);
  13. if (!empty($_GET['w']) and file_exists("controller/".$_GET['w'].".php")){
  14. switch($page) {
  15. //case ''.$page.'': $file = "controller/".$page.".php";
  16. case ''.$page.'' : include('controller/'.$page.'.php');
  17. break;
  18. default: $file = "controller/home.php";}
  19. }else{
  20.  
  21. $file='controller/home.php';
  22. }
  23.  
  24. $smarty = new Smarty;
  25. $smarty -> assign('page', $page);
  26. $smarty -> assign('file', $file);
  27. $smarty -> display(''.$template_name.'/index.tpl');
  28.  
  29. }
  30. ?>
  31.  


Czy powyższy kod jest optymalnie napisany? Nie zawiera błędów?
Druga sprawa to nie wiem czemu nie wczytuje mi podstrony test.

index.php?w=test

plik test.tpl znajduje się w templates
plik test.php znajduje się w controller

Ten post edytował casperii 6.03.2016, 23:18:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
casperii
post
Post #2





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


@nospor postanowiłem powrócić do swojego "szkieletu" strony:-) i oprzeć go o smarty (na razie MVC na bok).

  1. $smarty = new Smarty;
  2. $smarty->template_dir = 'templates/';
  3. $smarty->compile_dir = 'templates_c/';
  4.  
  5. $page=basename($_GET['w']);
  6. if (!empty($page) and file_exists("controller/".$page.".php")){
  7. define($page, true);
  8. $file='controller/'.$page.'.php';
  9. }else{
  10.  
  11. $page='controller/start.php';
  12. }
  13.  
  14. $smarty -> assign('page', $page);
  15. $smarty -> assign('file', $file);
  16. $smarty -> display(''.$template_name.'/index.tpl');


zauważyłem jak dla mnie poważny błąd w tej składni - mianowicie, dołączam do index.tpl owy plik:

  1. {include_php file="controller/test.php"}


który to zostaje przekazany do

  1. $smarty -> display(''.$template_name.'/test.tpl');


a następnie wczytany w index. OK wszystko działa. Ale np jak wywołam sobie index.php?w=test <-- to mi ten test wczyta w index tak jakby 2 x.
Domyślam się , że pliki includowane mogę sobie w inny katalog wstawić, tak aby wykraczał poza "controller" ale czy i w jaki inny sposób zapobiegać takim "jajom" (IMG:style_emoticons/default/smile.gif)


Dodatkowo chciałbym się dowiedzieć od ekspertów po co się stosuje taki kod na początku pliku:

  1. if (eregi("start.php", $_SERVER['PHP_SELF'])) {
  2. Header("Location: ./index.php");
  3. die();
  4. }


Oczywiście wiem, że eregi już jest przestarzałe i można zastąpić to strstr();

nikt nie zna odpowiedzi?

Ten post edytował casperii 27.03.2016, 23:14:01
Go to the top of the page
+Quote Post

Posty w temacie


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: 4.10.2025 - 14:23