přepsání callback() pro helperLoader v nette 2.1

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

Jak mám přepsat https://latte.nette.org/en/develop#… abych se zbavil volání callback(), které bylo v nette 2.1 zrušeno.

Dle rad, jsem zkusil to s array(), ale pak mi laděnka vyhazuje Callback 'Array' is not callable

Zjednodušeně, to mám takto

abstract class BaseControl extends UI\Control {
	/** @var Helpers */
	protected $myHelper;

	protected function createTemplate($class = NULL) {
		$template = parent::createTemplate($class);
		$template->registerHelperLoader(array($this->myHelper, 'loader'));
		return $template;
	}
}
class Helpers extends Nette\Object {

	public function loader($helper) {
		if (method_exists($this, $helper)) {
			return array($this, $helper);
		}
	}
}
Jan Tvrdík
Nette guru | 2595
+
0
-

Hm… to by mělo fungovat.

Ivorius
Nette Blogger | 119
+
0
-

Přidávám výstup http://www.aivo.cz/callback.htm

David Matějka
Moderator | 6445
+
0
-
array (2)
	0 => NULL
	1 => "loader" (6)

takze mas prazdny $this->myHelper

Ivorius
Nette Blogger | 119
+
0
-

grrr, to je asi zase další novinka nette 2.1 final páč dříve mi to inject metody bralo. Díky.

Editoval Ivorius (4. 1. 2014 17:24)

Jan Tvrdík
Nette guru | 2595
+
0
-

@inject anotace fungují mimo presentery jen v 2.2-dev.

David Matějka
Moderator | 6445
+
0
-

nebo se nechaji zapnout pomoci

inject: true
Milo
Nette Core | 1283
+
0
-

@Ivorius Proč grr? Jakou verzi Nette jsi dříve používal?

David Grudl
Nette Core | 8233
+
0
-

callback() není potřeba přepisovat. Jednak v Nette 2.1 ta funkce stále existuje, ale především si ji člověk může kdykoliv doplnit:

	function callback($val, $method = NULL)
	{
		return $method === NULL ? $val : array($val, $method);
	}