ugrás a tartalomhoz

Megfelelő menü kiirása Smarty sablonnal

Szekeres Gergő · 2006. Szep. 1. (P), 18.05
Elég alap problémám van, de nem jövök rá a megoldásra:

Eddig egy több ágú feltétellel vizsgáltam meg hogy mikor milyen tartalmat jelenítsek meg a felhasználónak, egyszerüen meghívtam az adott fv-t, vagy beszúrtam egy filet, és az 'sima' printtel ki is írta a tartalmat.

Most azonban szeretném elérni ugyanezt az mvc modellel is:

van egy show_content php függvényem, amiben van két switch elágazás, és jópár include. (Az includeolt állományok is meghívják a Smarty osztályt, hozzárendelik a változókat, kiválasztják a .tpl filet)
Ezt regisztráltam is a smarty számára, ahol hibaüzenet nélkül meghívja, de nem ad kimenetet, nem jelenik meg a kívánt tartalom.

mit rontottam el?
 
1

konkrétan?

TeeCee · 2006. Szep. 1. (P), 21.43
PLZ Definiáld: "regisztráltam is a smarty számára"

Mivel nem adsz semmi támpontot:
- A smartyban a display() használatos a template kiírására, a fetch() csak stringbe teszi. Az elsőt használod, vagy az utóbbit? Ha az utóbbit: ki is iratod?
- A php.ini-ben az error_reporting E_ALL? Ha nem, akkor lehet, hogy nem látsz warningot, ill. noteice-ot, ami jelentősen befolyásolja a futást...)
- output bufferinget használsz? ( ob_start() ) Ha igen, akkor a végén a smarty kiírása / kiíratása előtt befejezed? Vagy flush-eled a legvégén?

Valami kódot nem ártana írnod, mert így nem fog menni a segítség.
2

sorry

Szekeres Gergő · 2006. Szep. 2. (Szo), 09.04
ok, próbáltam úgy fogalmazni, hogy kód nélkül is meg lehessen érteni, úgy látszik nem sikerült:)

szóval:

index.php

<?php
require_once('/./PEAR/Smarty.class.php'); //smarty osztály beillesztése (configolt)

 /*Részlet a show_Content - ből.
  *
  */

function show_Content() {
     switch ($_REQUEST['id'])
     	{
      	case "valami":
        include("xy/z.php");
        break;

        case "akarmi":
        include("xy/t.php");
        break;

        default:
        include("xy/login.php");
        break;

        }
}

 $smarty = new Smarty();
 $smarty ->register_function('show_Content', 'show_Content');
 $smarty -> display('index.tpl');

És pl a login.php

<?php
     $smarty = new Smarty();
     $smarty ->assign('errorCount', $_SESSION['errorCount']);
     $smarty->display('login.tpl');
?>
A login.php önmagában lefut, meg is jelenik a tartalom, index.tpl nél is az a baj, hogy nem fut le a show_Contetnt függvény, de a template megjelenik.

Nincs error report, be van kapcsolva, de nincs hibaüzenet..

ob_startot kiszedtem, úgy sem megy.
3

re: Megfelelő menü kiirása Smarty sablonnal

talger · 2006. Szep. 2. (Szo), 18.30
Elösször is a smarty függvényben (show_Content()) nem célszerű a kimenetre írni, hanem a generált kimenetet visszatérési értékben visszaadni.

http://smarty.php.net/manual/en/api.register.function.php

Vagyis szerintem úgy kellene, hogy:
login.php

<?php
$smarty = new Smarty();
$smarty ->assign('errorCount', $_SESSION['errorCount']);
return $smarty->fetch('login.tpl');
?>
4

thx

Szekeres Gergő · 2006. Szep. 3. (V), 10.56
Köszi a segítséged!

Végül az lett a megoldás, hogy a register_function() első argumentumának más nevet adtam, mint az eredeti függvénynek, és megjelent.. Nem tudom, mi volt a baja a show_Content-tel, de így megy.

Kipróbáltam a Te megoldásodat is, de nekem így nem írt ki semmit.