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;
}
}
?>