použití šablon bez MVC, rozchození odkazů
- tatyalien
- Člen | 239
Dobrý den,
chci se zeptat, jak jde dostat do šablon „odkazy“? Například pokud chci
udělat odkaz na daném vebu do sekce /uvod, nebo /kategorie/skupina/hodnota
Rozdhodit plink, nebo link se mě nepodařilo, asi dělám něco blbě.
Zkusil jsem si rozchodit šablonu bez MVC takto:
<?php
require 'Nette\loader.php';
//use Nette\NDebug;
//use Nette\Environment;
//use Nette\Templates\Template;
//use Nette\Templates\LatteFilter;
// načteme framework
//require_once dirname(__FILE__) . 'Nette/loader.php';
// volitené, pro šikovnější ladění aplikace
NDebug::enable();
// povinné - nastavíme cestu k dočasnému adresáři (nejlépe jako absolutní cestu)
//Environment::setVariable('tempDir', dirname(__FILE__) . '/temp');
define('WWW_DIR', dirname(__FILE__));
define('APP_DIR', WWW_DIR . '');
// vytvoření šablony
$template = new NTemplate();
// následující kroky, až do renderování, mohou být uvedeny v libovolném pořadí
// zaregistrujeme filtr Latte, který umožní používat syntax jako {if} ... {/if}, {foreach} ...
$template->registerFilter(new NLatteFilter);
// zaregistujeme tzv. helpery, které budou escapovat HTML znaky
$template->registerHelper('escape', 'Nette\Templates\TemplateHelpers::escapeHtml');
$template->registerHelper('escapeJs', 'Nette\Templates\TemplateHelpers::escapeJs');
$template->registerHelper('escapeCss', 'Nette\Templates\TemplateHelpers::escapeCss');
// určíme soubor se šablonou
$template->setFile('default.phtml');
// předáme ji parametry
$template->name = 'Jack';
$template->people = array('John', 'Mary', 'Paul');
$template->LeveMenu = array('<a href="abc">úvod</a>', 'Mary', 'Paul');
$template->hello = 'Hello World';
// název funkce je libovolný
function justifyHelper($s, $length = 3)
{
return str_pad($s, $length, ' ', STR_PAD_LEFT);
}
// a zaregistrujeme jej do šablony pod názvem 'justify' (vložte do předchozího kódu)
$template->registerHelper('justify', 'justifyHelper');
// a vyrenderujeme
$template->render();
?>
a šablonu mám zatím jen na testování:(phtml)
<h1>Hello {$name}</h1>
Šablona použita z www: https://latte.nette.org/cs/
<ul>
{foreach $people as $person}
<p id="item{$iterator->counter}">{$person}</p>
{if !$iterator->last}
<hr />
{/if}
{/foreach}
</ul>
{foreach $people as $person}
<li>{$person|justify:3}</li>
{/foreach}
Editoval tatyalien (8. 11. 2010 12:46)
- Foowie
- Člen | 269
Bez MVC se budeš muset spokojit s
<a href="http://domain.com/xyz">ODKAZ</a>
. Pokud budeš
chtít vytvářet odkazy pomocí makra {link}/{plink}
, musí
systém vědět strukturu systému, mít nadefinované routy apod.
Zjednodušeně řečeno, pokud chceš používat chytré odkazy (plink/link)
musíš použít celý FW.
PS: Celý FW ne, ale více částí než jen šablony :)
- tatyalien
- Člen | 239
Foowie napsal(a):
Bez MVC se budeš muset spokojit s
<a href="http://domain.com/xyz">ODKAZ</a>
. Pokud budeš chtít vytvářet odkazy pomocí makra{link}/{plink}
, musí systém vědět strukturu systému, mít nadefinované routy apod. Zjednodušeně řečeno, pokud chceš používat chytré odkazy (plink/link) musíš použít celý FW.PS: Celý FW ne, ale více částí než jen šablony :)
Celý FW chci používat taky, ale v OOP se zatím tolik orientovat neumím, tak procházím formuláře a šablony zatím po částech. V dokumentaci zatím je velká černá díra :-D
Editoval tatyalien (8. 11. 2010 14:04)
- Šaman
- Člen | 2665
Makro {plink} je $presenter->link(..) takže bez prezenteru to nejde.
A bez rout, presenterů a pohledů nemá ani {link} co linkovat (překládat
modul, presenter a akci na URL).
Musíš se rozhodnout, jestli budeš provozovat celou Nette aplikaci (se všema vymoženostma) nebo jen šablony (ty ale linkování neřeší).
// Edit: OOP nijak hutně znát nemusíš, nastuduj si co je presenter (tam píšeš kód) a pohled (šablony). Bez modelu se zatím obejdeš a když se to naučíš správně nacpat do skeletonu, tak můžeš mít nette aplikaci vcelku snadno a rychle. Tvůj vlastní kód vůbec nemusí být objektový – to příjde samo časem. :)
Editoval Šaman (8. 11. 2010 14:23)
- tatyalien
- Člen | 239
No co je prezenter už jsem si přečetl, čtu knihy, tutoriály atd… ale je zde pouze jeden malý příklad na webu, který už asi není ani aktuální, když je nette 2.0, tam už skeleton není, je tam sandbox, kde je jiná struktura atd.
Nikde jsem nenarazil na rozáhlejší příklad, nebo ukázku zdrojových kódu složitější aplikace, chtěl jsem si například předělat jednoduché acl s přihlašováním a různým druhem zápisu a výběru dat z DB. (abych si své aplikace přepsal do OOP v Nette a měl je bezpečnější, ale zatím k tomu vím tak málo, že nevím ani kde začít) :-D
Student už nejsem a své projekty mám pouze pro osobní potřebu, takže abych si zaplatil školení za cca 9tis je pro mě dost… :(
Editoval tatyalien (8. 11. 2010 15:34)
- Honza Kuchař
- Člen | 1662
Já jsem postupoval takto. Nejdřív jsem si začal studovat co to je OOP a jak to funguje. Bez toho se podle mě nehneš dále, resp narazíš. ;)
Potom jsem si stáhl hotový quick start a zkoumal jak co je a u toho si četl quick start. Zjistil jsem, že existuje něco jako MVP, začal jsem studovat, co to je a jak to funguje.
No a potom jsem začal psát svůj první web v Nette. Byl jsem nejdřív příjemně překvapen, jak je to snadné, pak nepříjemně znechucen, protože mi něco nešlo a pak jsem do toho začal více pronikat a od té doby jsem spokojen a nehodlám FW měnit. :)
Toť můj nettepis.
- Honza Kuchař
- Člen | 1662
A ještě si vzpomínám, že jsem si tehdy kdysi otevřel nedokumentaci a začal si ji pročítat od shora dolů. Bez toho, abych se nějak díval do zdrojáků či tak. Prostě jen četl. Tím jsem si dostal do podvědomí alespoň základní fungování Nette.