vlastní helper
- Jod
- Člen | 701
<?php
$this->template->registerHelper('blogUrl', array(BlogHelpers, 'blogUrl'));
?>
{$url|blogUrl}
Nette/Template/TemplateHelpers
Editoval Jod (12. 2. 2009 19:55)
- simon
- Člen | 98
nevim proc ale zpusob registrace tak jak jsi psal mi nefungoval:
<?php
require 'helpers/Blogs.php';
$this->template->registerHelper('blogurl', array(BlogHelpers, 'blogUrl'));
?>
dava to chybu
Warning</b>: call_user_func_array() [<a href='function.call-user-func-array'>function.call-user-func-array</a>]: First argument is expected to be a valid callback, 'BlogHelpers::blogUrl' was given in <b>/home/simon/Workspace/php/nette/project/nettesubversion/Nette/Templates/Template.php</b> on line <b>300</b><br />
nakonec jsem to udelal takto:
<?php
require 'helpers/Blogs.php';
$this->template->registerHelper('blogurl', 'BlogsHelpers::blogUrl');
?>
- kravčo
- Člen | 721
Nefungovalo to preto, že je tam preklep, nie kvôli nedefinovanej konštante.
Jod napsal(a):
<?php $this->template->registerHelper('blogUrl', array(BlogHelpers, 'blogUrl')); ?>
Správne tam malo byť BlogsHelpers. Nič to nemení na tom, že ten reťazec mal byť uzavretý v úvodzovkách. Btw. phpčko pri nedefinovanej konštante vyhodí notice, nie warning…
sairon napsal(a):
Asi proto, že je správně tohle:
<?php $this->template->registerHelper('blogUrl', array('BlogHelpers', 'blogUrl')); ?>
Ten istý preklep… už bez chybičky…
simon napsal(a):
<?php require 'helpers/Blogs.php'; $this->template->registerHelper('blogurl', 'BlogsHelpers::blogUrl'); ?>
Tento spôsob je alternatívny, podľa manuálu funguje od PHP 5.2.3, a keďže Nette prišlo nedávno s podporou pre PHP už od verzie 5.2.0, v prípade nedostatočnej verzie tento callback prepíše na štandardne podporovaný variant, ktorý opisovali Jod a sairon.