jak načíst jinou šablonu do @layout.phtml
- muflix
- Člen | 92
Dobrý den, vytvořil jsem si pomocí netbeans nette pluginu nový projekt ze
zipu
Nette Framework 2.0-alpha2 pro PHP 5.3
a v něm jsem si vytvořil do složky presenters
HomepagePresenter.php
<?php
class HomepagePresenter extends BasePresenter
{
public function renderDefault()
{
$this->template->message = 'Homepage';
}
}
a
ContactPresenter.php
<?php
class ContactPresenter extends BasePresenter
{
public function renderDefault()
{
$this->template->message = 'Contact';
}
}
potom k těmto presenterům mám ve složce templates šablony
Homepage/default.phtml
{block content}
Vítejte na stránkách.
Contact/default.phtml
{block content}
Kontakty..
celý projekt je ve složce test.dev ke kterému má přístup apache, takže
po zadání url do browseru
http://test.dev/document_root/
se mi zobrazí moje hlavní stránka (@layout.latte jsem přejmenoval na
@layout.phtml, kvůli zvýraznovači syntaxe) ve které je includnut
#content, takže se vypíše
‚Vítejte na stránkách.‘
to je v pořádku, ale rád bych si teď vypsal Kontakty.. tak jsem do hlavní stránky (@layout.phtml)vložil
<div id="navigace">
<ul>
{foreach $menuItems as $id => $item}
<li><a href="{plink $id}">{$item}</a></li>
{/foreach}
</ul>
</div><!-- navigace -->
a upravil presenters/BasePresenter.php
<?php
abstract class BasePresenter extends Nette\Application\Presenter
{
public $oldLayoutMode = FALSE;
public function beforeRender()
{
$this->template->menuItems = array(
'Homepage:' => 'Domů',
'Contact:' => 'Kontakty',
);
}
}
změny uložím a znovu načtu stránku, odkaz domů odkazuje na
/document_root/ a funguje
a odkaz Kontakty odkazuje na /document_root/contact ale nefunguje. Browser hodí
404 error.
Moje otázka tedy je, jakým způsobem mohu zprovoznit proklikávání mezi
šablonamy.
V návaznosti na to by mě také zajímalo jestli mohu smazat z url
/document_root/ abych zadal pouze http://test.dev a přesměrovalo mě to na
@layout.phtml, nyní se mi pouze vypíše obsah adresáře, de mi jen
o to, jestli jsem si to nějak špatně nenakopíroval nebo se to potom řeší
routováním.
část dokumentace i tutoriály ‚quick start‘ nebo ‚tvorba statického webu‘ jsem si přečetl, ale není mi to z toho úplně jasné. Děkuji
- h4kuna
- Backer | 740
Ahoj,
když ti to píše 404 tak nemáš zaplou laděnku
- zapni si laděnku v bootstrap.php Debug::enable(Environment::DEVELOPMENT); a $application->catchExceptions = FALSE; měl by jsi vidět blueScreen bude mít jinou červenou
- napiš požadovanou url do prohlížeče a řekne ti jaký presenter a kde má být umýstěný
- zmačkní F5 a řekne ti kde máš vytvořit šablonu
- routy zatím nehrajou roli
pár divných věcí:
- píšeš že máš document_root ale Nette 2.0 má toto
změněno na www tzn jsis dělal podle návodu?
- v balíčku je sandbox a funkčních i pár stránek
- public $oldLayoutMode = FALSE; to je pro tvoje potřeby?
- myslím že *.phtml je podporované ale je deprecated tzn používej *.latte, IDE má možnost zapnutí zvýraznění syntaxe i pro jiné koncovky souborů
V návaznosti na to by mě také zajímalo jestli mohu smazat z url /document_root/ abych zadal pouze http://test.dev a přesměrovalo mě to na @layout.phtml, nyní se mi pouze vypíše obsah adresáře, de mi jen o to, jestli jsem si to nějak špatně nenakopíroval nebo se to potom řeší routováním.
toto neřeší nette
- nasměruj DocumentRoot serveru přímo do document_root
- vytvoř si virtual host + a)
- ja používám že mi všechno jede na localhost/{názav projektu}/www není tam opruz s a) a b). Na produkčních serverech www je DocumentRoot
- muflix
- Člen | 92
Tak jsem stáhl sandbox z https://github.com/nette/sandbox
zprovoznil ho (získal jsem uvítací stránku).
před tím jsem také upravil vhost document root do /www
ale mám opět totožnou chybu.
když kliknu na odkaz kontakty tak mě to přesměruje na
test.dev/contact (mám ContactPresenter.php a templates/Contact/default.latte)
kódy stejné viz výše.
a Browser odpoví
Not Found
The requested URL /contact/ was not found on this server.
laděnka je nastavená na false což je myslím i default.. a snad mi tam i skočila už nevím kvůli čemu.
nicméně mám presenter ErrorPresenter.php a 404.latte a to se neaplikuje
nějak :o
tak nevím, trochu jsem prohlížel i ty demo příklady, ale menu jsem tam
nenašel.
edit: nemám tedy v presenterech metody actionShow() apod, ale je tam pouze render default což by asi mělo práve vykreslit tu šablonu?
Editoval muflix (30. 1. 2011 20:20)
- muflix
- Člen | 92
Vložil jsem
$router[] = new SimpleRouter('Homepage:default');
pod
$router[] = new Route('index.php', 'Homepage:default', Route::ONE_WAY);
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
a pak jsem zkusil puvodni routy zakomentovat, ale v obou případech mi to hlásí
Class 'SimpleRouter' not found
ale odkaz na default mi normálně funguje, nefunguje mi odkaz na contact