Plnění šablon proměnnými – lze vynechat metody render<Něco>?

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

Napadla mě takový věc, že abych měl jednodušší život, mohl bych úplně vynechat všechny metody render<Něco> a místo nich šablony naplnit až na konci metod action<Něco>.

public function actionSomething($param_1, $param_2)
{
    ....

    // Fill template with variables
    $this->template->var_1 = $param_1;
    $this->template->var_2 = $param_2;
}

Vždycky jsem totiž lokánlí porměnné akcí vkládal do členských proměnných třídy a pak až teprve z těchto členských proměnných do šablon v renderech. Takhle nebudu ty členské proměnné potřebovat. K čemu by se pap metody render daly ještě použít?

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Tohle je sice zkratka, ale popírá smysl oněch metod :). Například zpracování signálů probíhá po action metodách, a signály se obvykle ukončují přesměrováním. Proto pokud bys plnil šablonu už v action metodách, zbytečně vytváříš instanci šablony.

Samozřejmě je to na tobě, ale pokud oželíš pár znaků navíc, bude to mít při růstu projektu jen výhody :).

Šaman
Člen | 2668
+
0
-

Proč členské proměnné? Zjistil jsem, že mám vždy action, NEBO render metodu, takže za

  1. nevím kdy nastane potřeba mít obojí
  2. tohle nebude fungovat? Já to nikdy nepoužil, ale bylo by to první, co bych zkusil, kdybych potřeboval obojí:
<?php
public function actionSomething($param_1, $param_2)
{
    // nějaká vnitřní logika, která může končit buď přesměrováním, nebo pokračovat na render metodu
}

public function renderSomething($param_1, $param_2)
{
    // práce se šablonou
    $this->template->var_1 = $param_1;
    $this->template->var_2 = $param_2;
}
?>
Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Eh, já si nevšimnul, že šlo o pouhé proměnné akcí… ty samozřejmě nemá smysl prohánět nějakými členskými proměnnými. Ale třeba článek načtený podle IDčka už je čistší načíst v action a do šablony předat v render.