@nospor - różnica jes faktycznie niewielka, jeśli patrzysz na wszystko od strony przykładu, który podałem. Nie jestem bez winy - podalem mylący przykład, co pewnie wynika również z mojego zaspania
Ideą nie jest tu includowanie plików szablonów, tylko
rezulatatów wykonania akcji . Rezultatem może być widok o nazwie 'hello.tpl', ale również 'error.tpl'. Zatem prawidłowe odwołanie przez metodę get() powinno żądać rezultatu.
np.
Akcja - wyybiea sobie templatke z zeleżności od $ok
<?php
function sayHello(){
$ok=$this->params->post->user
if ($ok){
$this->template='hello.tpl';
}
else{
$this->template='error.tpl';
}
}
?>
W widoku (w jego częsci pierwsze - logicznej) odowłujemy się poprzez:
<?php
$view->get('sayHello');
?>
Oczywiście wiele zależy od implementacji warstwy prezentacyjnej.
W czym moim zdaniem jeszcze jest lepsze? Ano. Tak jak wspomniałem - można w banalny sposób użyć kilku róznych systemów szablonów, co jest nieosiiągalne poprzez
{include file="plikzmenu.tpl"}
Nie jest, bo tu z założenia mamy Smarty
Natomiast popatrz na taką prostą modyfikację akcji sayHello()
<?php
function sayHello(){
$ok=$this->params->session->status; //status zalogowania
if ($ok){
$this->setTemplate('hello.tpl', 'smarty'); // dla tego szablonu użyj silnika smarty
}
else{
$this->setTemplate('error.tpl', 'php'); // dla tego użyj tylko php
}
$this->data->user=$this->params->session->user; // string - nick usera
}
?>
I teraz:
hello.tpl - renderowany przez smarty
Cześć {$user}
error.tpl - renderowany przez PHP używające zwykłego include()
Wystąpił błąd - brak użytkownika <?php print $user; ?>
Przykład ten dalej jest obarczony wieloma błędami. np. wybór templatki w akcji jest złym rozwiązaniem.W prawdziwym systemie lepiej odseparować nawet to.
Ja to robię w pliku XML
<view engine="smarty">nazwa_pliku</view>
Wszystkie te operacje powinny być dla użytkownika frameworka przezroczyste. Za pomocą prostych tagów, czy innej konfiguracji powinien wybrać sobie silnik renderowania i po prostu pisać kod. Resztę robi system.
Tak wygląda przykładowa struktura plików, gdzie katalogi reprezentują akcje a plikiw w katalogach to dostępne szablony.
ObrazekJednej rzeczy ciągle jeszcze nie rozwiązałem - tzw. skórek - mam pomysły, ale nie jestem do nich przekonany.
uff : )
Pozdrawiam