setView nepředá parametr layoutě
- iwory
- Člen | 147
Zdravím, vytvořil jsem si mobilní verzi – respektivě mobilní šablony.
public function startup()
{
parent::startup();
if($this->mobileDetect->isMobile())
{
$this->setView($this->getView() . '.m');
}
}
Všechno v pořádku funguje, ale v případě, kdy posílám do renderu
nějaký parametry, tak se tam nedostanou.
Je nějaký způsob, jak to renderu parametry dostat?
Dík
Editoval iwory (29. 11. 2013 18:16)
- Robyer
- Člen | 74
Já bych tu kontrolu pro mobilní šablonu dal přímo do metody
$presenter->formatTemplateFiles()
.
Tzn. napsal bych si upravenou verzi tohoto: https://api.nette.org/…ter.php.html#…
- enumag
- Člen | 2118
@Robyer: Samostatné view je lepší protože ti umožní té šabloně předat jiná data – u mobilů typicky jen podmnožinu toho co předáváš normálně.
@iwory: Můžeš trochu rozvést tohle (nejlépe s kódem)? Nejsem si jistý že to chápu správně. Co se stane? Hodí to chybu? Parametry jsou v requestu ale neprobublají? Něco jiného?
Všechno v pořádku funguje, ale v případě, kdy posílám do renderu nějaký parametry, tak se tam nedostanou.
EDIT: Aha už vidím problém… Ty totiž to setView používáš špatně – jde o tu tečku. Musel bys to dělat asi takhle:
public function startup() {
if ($this->mobileDetect->isMobile())
$this->setView($this->getView() . 'Mobile');
}
}
public function renderDefault($foo) {
}
public function renderDefaultMobile($foo) {
}
Plus šablony default.latte a default-mobile.latte.
Editoval enumag (30. 11. 2013 10:40)
- Robyer
- Člen | 74
enumag napsal(a):
@Robyer: Samostatné view je lepší protože ti umožní té šabloně předat jiná data – u mobilů typicky jen podmnožinu toho co předáváš normálně.
Pravda, pokud by člověk potřeboval předávat jiná data tak určitě
samostatnou view.
Pokud by chtěl předávat ta stejná data (tak jsem pochopil dotaz), tak by
měl se samostatnou view zbytečné psaní navíc.
A osobně bych neměl problém ani kdyby to byla jen podmnožina dat – pokud by to bylo lazy a ty nepoužité se ani nenačítaly, proč ne? :)
Editoval Robyer (30. 11. 2013 11:03)