setView nepředá parametr layoutě

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
iwory
Člen | 147
+
0
-

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
+
0
-

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
+
0
-

@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
+
0
-

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)

iwory
Člen | 147
+
0
-

@Robyer: Pochopil jsi správně.
@enumag: Použil jsem Tvoje reřesni ikdyz se mi nelibí duplicita render method. Ale jelikož e jedna o tri stránky, tak to neresim.

Kdyby jich bylo víc a data byla stejná, tak bych volil cestu Robyeho.

Díky…

enumag
Člen | 2118
+
0
-

Ono by v principu bylo možná lepší obě řešení zkombinovat. Pokud by existovala speciální render metoda tak by se použila, pokud ne, použila by se ta původní. Stejným způsobem by se dala řešit i šablona.