Problém s calbackem v komponentě odkazujícím na presenter
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- Saska
 - Člen | 23
 
Chci požádat o pomoc. Už tady nad tím sedím asi dva dny a poříd to nechodí. Konkrétně se jedná o komponentu, z které mi nejde zavolat callback na metodu v presenteru, to znamená, že se nezavolá v presenteru funkce formOperationHandler(SubmitButton $button).
zde je kód presenteru
<?php
class Front_DefaultPresenter extends Front_BasePresenter
{
	...
	public function formOperationHandler(SubmitButton $button)
	{
		echo("OperationHandlerECHO");	//pro zjistenim jestli funkce probehla
		$this->flashMessage("OperationHandlerFLASH");	//pro zjistenim jestli funkce probehla
		$form = $button->getParent();
		// was submitted?
		if ($form->isSubmitted() && $form->isValid()) {
			$values = $form->getValues();
		}
		if(!$this->presenter->isAjax())	$this->presenter->redirect('this');
	}
	protected function createComponentForum(){
		$forum = new Forum;
		$callback = array($this, 'formOperationHandler');
		$forum->setOnOperationSubmit($callback); // set handler
		$this->addComponent($forum, 'forum');
//		return $forum;
	}
}
?>
a kod komponenty
<?php
class Forum extends Control
{
	/** @var array  of valid callback(s) */
	protected $onOperationSubmit;
	...
	public function setOnOperationSubmit($callback)
	{
		if (!is_array($this->onOperationSubmit)) {
			$this->onOperationSubmit = array();
		}
		$this->onOperationSubmit[] = $callback;
		return $this;
	}
	public function render()
	{
		$form = $this->getForm();
		echo $form;
	}
	public function getForm($need = TRUE)
	{
		return $this->getComponent('form', $need);
	}
	protected function createComponentForm()
	{
		$form = new AppForm($this, 'form');
		$form->onSubmit[] = array($this, 'formSubmitHandler');
		$form->addTextArea('text', 'Text:', 100, 30);
		$form->addSubmit('operationSubmit', 'Send')->onClick = $this->onOperationSubmit;
		return;
	}
}
?>