Problém se setLayout(), chyba 404
- Jan Mikeš
- Člen | 771
Zdravím,
mám mírný problém s použítím funkce setLayout().
Vypisuje mi chybu 404, ale layout existuje a pokud adresu, kterou získám
z pole $this->FormatLayoutTemplateFiles() zadám do prohlížeče,
normálně se k ní dostanu.
<?php
protected function startup() {
parent::startup();
$this->setLayout("test");
print_r($this->formatLayoutTemplateFiles());
}
?>
Chyba je ale „Page not found. Missing template ‚…\xampp\htdocs\fotbal\app\templates\Muzi\muzi.latte‘.“, nette tedy ani můj test.latte nehledá, ale hledá něco úplně jiného.
Kromě startupu jsem zkoušel to zkoušel hodit i do actionDefault(), a chyba se změnila pouze na to, že nelze nalézt default.latte (který samozřejmě také neexistuje, ale mělo by to hledat šablonu kterou jsem zadal, tedy test.latte)
Zde je pole, které se mi vypíše:
<?php
Array
(
[0] => C:\xampp\htdocs\fotbal\app/templates/Muzi/@test.latte
[1] => C:\xampp\htdocs\fotbal\app/templates/Muzi.@test.latte
[2] => C:\xampp\htdocs\fotbal\app/templates/Muzi/@test.phtml
[3] => C:\xampp\htdocs\fotbal\app/templates/Muzi.@test.phtml
[4] => C:\xampp\htdocs\fotbal\app/templates/@test.latte
[5] => C:\xampp\htdocs\fotbal\app/templates/@test.phtml
)
?>
Šablonu mám vytvořenou hnedka na prvním umístění, ve kterém by se mělo hledat, tedy C:\xampp\htdocs\fotbal\app/templates/Muzi/@test.latte
Jedná se o chybu, nebo o mé špatné použití?
- Jan Mikeš
- Člen | 771
Máš pravdu, popletl jsem si co je to view a co je layout a k čemu slouží.
K tomuto problému jsem se dostal při řešení jedné situace, se kterou
si nevím rady.
Jedná se o to, že potřebuji aby jeden presenter využíval latte šablonu
jiného presenteru.
Konkrétněji, mám fotbalový klub, presenter Tymy, týmy se děli na muže, dorost, děti… toto jsou další presentery. Všechny věkové kategorie budou mít stejné šablony, ale pouze naplněné jinými daty.
Měl jsem takovou představu, že jednotlivé kategorie budou dědit od TymyPresenteru a jediné .latte šablony budou v /templates/Tymy/ a právě jsem se domníval, že tohoto docílím tímto:
<?php
$this->setLayout("../Tymy/".$this->getView());
?>
jenže view a layout jsou 2 rozdílné věci, což jsem si neuvědomil.
O data bych se staral potom v presenterech jednotlivých kategorií, jde mi jen o to, aby více presenterů používalo společné šablony.
Možná to patří spíše do začátečníků, ale nerad bych zakládal duplicitní téma, i když tento problém už nesouvisí tolik s nadpiskem, byl bych rád za pomoc.
Editoval Lexi (6. 1. 2012 14:21)
- 22
- Člen | 1478
nestačilo by to udělat jedním presenterem a pouze jinými
view
?
final class TymyPresenter extends BasePresenter
{
protected function startup()
{
parent::startup();
$this->setLayout('tymy');
}
public function renderMuzi()
{
...
}
public function renderDororst()
{
...
}
}
a pak mít akorát šablony:
@tymy.latte
muzi.latte
dorost.latte
možná do šablony ještě bude potřeba přidat
dědičnosti {extends 'parent_layout.latte'}
- Jan Mikeš
- Člen | 771
To by právě nešlo, každá z těch sekcí se pak ještě dělí na tabulku, soupisku, rozpis, atd.. a právě šablonu k těmto sekcím budou mít všechny věkové kategorie (prvotně jsem to nepopsal úplně do detailů..),
pak mě ještě napadá přidat další parametr předávaný odkazem s vlastním routerem, např n:href=„Tymy:rozpis, muzi“, ale osobně bych se raději dobral k nějakému řešení, jak použít šablonu cizího presenteru
- 22
- Člen | 1478
šablonu cizího presenteru nepoužiješ, jediné co lze použít, je dědičnost šablon, takže to co mají ty šablony společné, si vyhoď do společné šablony a z té pak dědí ty ostatní šablony, postup je stejný, jako kdyby jsi používal jeden presenter.. navíc se tam dají použít bloky.. viz. dokumentace, které se můžou různě dědit.
Možná by pro tebe bylo lepší si udělat nějaké útržky jenom a pak si
podle situace přes {include 'rozpis_table.latte'}
includnout
design tabulky, který potřebuješ.
Editoval 22 (6. 1. 2012 16:08)
- Patrik Votoček
- Člen | 2221
Podle mě je u tebe problém už v samotném základním návrhu.
Podle toho co píšeš máš takovéto požadavky:
- informace o fotbalových týmech
- 5 různých druhů pohledů
- 8 věkových kategorií
Z čehož mě vychází:
- 1 presenter
- 5 action / view s jedním parametrem (věková kategorie)