PHP promenna v Latte Sablone – FileTemplate

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

Ahoj, jsem zacatecnik v Nette a zkousim sablony. Dorazil jsem k makrum a chci odzkouset cyklus while.
Tak ho vyzkousim na prikladu se ziskavanim dat z DB a tak si udelam DB a dotaz. Kdyz prijde na sablonu (pouzivam FileTemplate) vlozim kod, upravim nazvy promennych podle svych potreb a spustim. A co vidim?

Undefined variable: table

Nevite proc se to deje? Konkretni kod :

{while $row = $table->fetch()}
    <span>{$row->name}</span>
{/while}

Dekuji za kazdou radu.

tomas.lang
Člen | 53
+
0
-

Ahoj, a máš do šablony předanou proměnnou $table? Případně jak ji do šablony předáváš?

jiri.pudil
Nette Blogger | 1032
+
0
-

A předal sis $table do šablony?

EDIT: Pozdě :)

Editoval jiri.pudil (3. 7. 2013 11:09)

acx2072
Člen | 5
+
0
-

Predavam pomoci

$template->table = $table;
jiri.pudil
Nette Blogger | 1032
+
0
-

A tu notice ti to vyhodí až v šabloně, nebo tam, kde předáváš $table do šablony?

acx2072
Člen | 5
+
0
-

Az v sablone.

jiri.pudil
Nette Blogger | 1032
+
0
-

V tom případě ukaž víc kódu (ideálně od vytvoření šablony po render).

acx2072
Člen | 5
+
0
-

Staci toto?

function renderList($name)
{
$table = $this->database->table("numbers")->where("name",$name);
$template = $this->createTemplate();
$template->setFile(dump($this->context->parameters['appDir'])."\\templates\Manual\list.latte");
$template->table = $table;
$template->render();

}
enumag
Člen | 2118
+
0
-

@acx2072: Jo stačí. Přepiš createTemplate na getTemplate.

Jan Mikeš
Člen | 771
+
0
-

Presne jak pise enumag.

Template nemusis znova vytvaret pomoci $this->createTemplate(), sablona je jiz vytvorena a dostupna

$this->template; // shortcut pro $this->getTemplate()

Edit: $template->render(); taky vyhod. Sablony presenteru se vykresluji automaticky, toto by jsi potreboval v komponente.

Editoval Lexi (3. 7. 2013 13:28)

acx2072
Člen | 5
+
0
-

Moc vam dekuji za cenne rady. Pomohlo to.