Sablony v nette
- dehtak
- Člen | 113
zdravim tak nejak zacinm s nette a skousim ruzne veci a funkce. Protoze
pouzivam sablony tak jako prvni jsem zkusil sablony , ale nefunguji
vytvoril jsem sablona.phtml
a index.php a do nej napsal tento kod , jen na zkousku
require('nette/loader.php');
Debug::enable();
$template = new Template;
// nastavíme cestu k šabloně
$template->setFile('sablona.phtml');
// nastavíme parametry
$template->hello = 'Hello World';
$template->render();
a sablona
<p><?php echo $hello ?></p>
vypise to ale chybu
File: S:\http\nette\core\Environment.php Line: 323
Line 323: throw new InvalidStateException("Unknown environment variable '$var'.");
presne takhle je to popsany tady
akorad ze tam zapomnel dopsat ten render(); bez neho se objevi bila stranka.
navody nejsou tedy moc dobre napsane kdyz tam chybi veci jako je render()
Dalsi vec, koukal jsem do API reference a vsechno je tam popsany anglicky , byl
jsem rad ze je konecne nakej ceskej framework a nakonec udelate anglicky
manual.
Priklad
bool
remove (mixed $item)
Removes the first occurrence of the specified element.
dole je vysvetlivka , proc neni napsana cesky.
Problem u tech frameworku je ze clovek chce s nejakym zacit , nevi s jakym
tak musi postupne vssechny zkouset jeden po druhym , ale kdyz s nima nema moc
zkusenosti tak vybira framework kde je dobre napsanej manual. Uvital bych manual
napsanej v cestine pro ty aby se mohli hned na zacatku chytnout a pochopily jak
to funguje. Manual krok za krokem treba takovej nejakej jednoduchej blok
s vytvorenim 1 stranky , zmenou sablony , multijazykem a prihlasenim useru,
admina. Kdyz takhle clovek jede podlöe toho vaseho manualu a narazi hned na
zacatku na problem jako ja s tema sablonama tak ho to odradi. Jinak Grundlovi
drzim palce, je to frajer ze dokaze napsat takovejhle framework. Urcite toho ma
moc , tak mu prosim pomozte s manualem.
Editoval dehtak (6. 12. 2009 11:52)
- pave.kucera
- Člen | 122
Nejsem si teď úplně jistý, jestli to pomůže, ale zkus přemístit volání metody setFile až těsně před volání metody render, takže by pak kód vypadal takto:
<?php
require('nette/loader.php');
Debug::enable();
$template = new Template;
// nastavíme parametry
$template->hello = 'Hello World';
$template->setFile('sablona.phtml');
$template->render();
?>
- Panda
- Člen | 569
Dokumentace je skutečně slabou stránkou frameworku, nicméně věci se mají trochu jinak, než se na první pohled zdá.
Dokumentace je psaná pro použití celého Nette Frameworku jako celku,
nikoliv pro samostatné použití jednotlivých součástí. Volání
$template->render()
na stránce skutečně být nemá, protože
se o její zavolání ve správný čas postará samotný
Presenter
. U šablon se moc nepočítá s použitím mimo Nette
aplikaci (aplikací se rozumí aplikace řízená třídou
Application
, nikoliv jen aplikace s načteným frameworkem),
neboť jsou docela těsně navázány na samotné prostředí Nette –
šablony používají cache, do které se uloží „přeložená“ šablona,
aby se při každém zobrazení stránky nemusela šablona znovu procházet a
prohánět filtry (viz LatteFilter
). K tomu, aby toto cachování
mohlo správně fungovat, musí být prostředí správně nastavené, tzn.
nadefinované správné konstanty, vytvořené určité složky…
Pokud si chceš uvedený příklad spustit, můžeš použít jednoduchý
trik: ve složce s index.php
vytvoř zapisovatelnou složku
temp
a na začátek souboru index.php
přidej řádek
define('APP_DIR', dirname(__FILE__));
Ten řekne frameworku, že složku pro dočasné soubory (tedy vytvořený
temp
) má hledat ve složce se současným scriptem. Cachování se
bohužel při mých testech nepoužilo, což pravděpodobně bude způsobené
neúplným nastavením Nette aplikace (nezkoumal jsem), ale příklad se spustí
bez problémů.
Pro začátek s Frameworkem bych doporučil seriál na zdrojáku a starý quick start. Zdroje bohužel nejsou moc aktuální, nicméně základ zůstal stejný.
Na závěr bych Tě chtěl přivítat mezi Nettaři a pokud budeš mít jakékoliv otázky, klidně se ptej. Doufám, že budu mluvit za celou komunitu, když řeknu: vždy rádi pomůžeme!