Nefunguje mi helper v šabloně e-mailu

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

Sestavuju html e-mail a vypadá to nějak takto:

<?php
        $template = new Template;
        $template->setFile(APP_DIR.'/templates/Mails/kalkulace.phtml');
        $template->registerFilter(new LatteFilter);
        $template->form = $data;
?>

V šabloně je pak {$form['stala_platba']|number:2:',':' '} a hodí to chybu Call to undefined method Template::number().

Netuší někdo proč? V šablonách presenteru to normálně funguje. Musím registrovat ještě helpery?

redhead
Člen | 1313
+
0
-

Musím registrovat ještě helpery?

Ano, podívej se do metody createTemplate presenteru

Patrik Votoček
Člen | 2221
+
0
-

Ano… pokud to co jsi zde popsal máš v komponentě nebo v presenteru… doporučuju ti použít spíš:

$template = $this->createTemplate();
$template->setFile(APP_DIR.'/templates/Mails/kalkulace.phtml');
$template->form = $data;

PS: a nezapoměň v používat Absolutní odkazy…

Martin Mates
Člen | 179
+
0
-

Díky moc klucí. Works like charm.

iguana007
Člen | 970
+
0
-

Já to teď zkusil a nefunguje mi to … mám form v komponentě a laděnka mi hlásí:

Call to undefined method ContactForm::createTemplate().

Zkoušel jsem i jiné zápisy (jak jsem se dočetl ve FAQ) jako

parent::createTemplate();
$this->presenter->createTemplate();

ale nic nezabírá.

Mám latest dev verzi Nette 1.0 pro PHP 5.2 (včera staženou).

Martin Mates
Člen | 179
+
0
-

Já to mám takto, hotovo všichni spokojeni:

<?php
	$template = new Template;
        $template->setFile(APP_DIR.'/templates/Mails/kalkulace.phtml');
        $template->registerFilter(new LatteFilter);
        $template->registerHelper('number', 'number_format');
        $template->form = $data;
?>

Z jakého důvodu je lepší použít raději $this->createTemplate()? Možná by bylo lepší $this->getPresenter()->createTemplate(). Nezkousel jsem.

iguana007
Člen | 970
+
0
-

no takhle jsem to mel puvodne i ja … ale ja myslel, ze se tim createTemaplte() udela prave to, ze nebudu muset kazdy helper, ktery chci pouzit registrovat zvlast, ale ty defaultni budu mit normos k dispozici.

redhead
Člen | 1313
+
0
-

Máš tu komponentu s formem jako potomka Component nebo Control? Tu metodu můžou mít jen potomci Control, protože je to vykreslitelná komponenta a jako taková může pracovat se šablonou..

Editoval redhead (27. 8. 2010 12:50)