Změna pořadí callbacků v události

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

Používám Nifty grid. Mám nastaven filtr nad sloupcem. Chtěl bych si filtrovanou hodnotu schovat do session. Při připojování komponenty k presenteru (metoda attached) definuji callback:

<?php
$this->getComponent("gridForm")->onSuccess[]= array($this, "saveValues");
?>

gridForm je podkomponenta Niftygridu, která definuje callback při události onSuccess. Konkrétně je tam:

<?php
// ...
$form->onSuccess[] = callback($this, "processGridForm");
?>

Dále:

<?php
public function processGridForm($values)
{
	// ...
	$this->filterFormSubmitted($values);
}
?>

Dále:

<?php
public function filterFormSubmitted($values)
{
	// ...
	$this->presenter->redirect("this", array_merge($filters, $paginators));
}
?>

Takže, jakmile se odešle formulář datagridu, tak se zavolá callback, na jehož konci je redirect. Můj callback na uložení dat do session se tedy nezavolá.

Nechci zasahovat do originální komponenty (NiftyGrid). Nenapadá mě jiné řešení, než zaregistrovat svůj callback před ten z GridForm:

<?php
$onSuccessArray = &$this->getComponent("gridForm")->onSuccess;
$myCallback = array($this, "saveValues");
array_unshift($onSuccessArray, $myCallback);	// stávající callbacky se v poli odstrčí dál a před ně se vloží $myCallback
?>

Neexistuje nějaký lepší způsob, jak manipulovat s pořadím callbacků v události? Pokud se na to dívám úplně špatně a celá věc se dá vyřešit lépe, naznačte. Dík.