události

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

Ahoj

Lze nějak na urovni Presenteru vyřešit aby se některe action tvařili pouze jako udalosti?

<?php

class TablePresenter extends BasePresenter
{
  private $dataGrid;

  public function actionDefault($table)
  {
    $this -> dataGrid = new DataGrid;
    /* ... */
  }


  public function eventDataGridClick($table)
  {
    $this -> template -> table = /* ... */;
    $this -> invalidateControl('grid');
    /* ... */
  }

}

?>

actionDefault se vyvola při běžném zavolání presenteru z url,
eventDataGridClick by pak melo byt obdobou actionDataGridClick – tj. udalost na kliknuti treba na nejakem odkazu souvisejicim s tim gridem.

Jde mi o to, že pokud by to bylo „bezne“ action, pujte taky volat z url a to nechci, chtel bych to omezit jen na rezim POST kdyz isAjax == TRUE.

Nevím zda-li tohle Nette nějak dává samo o sobě, já jsem zkoušel překlenout to přes __call a to mi prakticky v každém přípoadě řvalo a když ne tak se nevracel odpovědí žádný obsah ze spinneru.

dik za tip
Pavel

Editoval pavel80 (8. 4. 2009 15:52)

Ola
Člen | 385
+
0
-

Můžeš zkusit třeba handle{Signal} a přidat dovnitř:

if($this->isAjax())
	// do something
else
	$this->terminate();

Ale měj na paměti že lidé s vypnutým JS mají smůlu.