Zacyklení vykreslování komponenty
- Martin
- Člen | 171
Ahoj všem. Mám problém, který se tu už několikrát řešil, nenašel jsem však konkrétní řešení pro mě. Aplikace mi končí chybou Fatal Error Maximum function nesting level of ‚100‘ reached, aborting! Děje se to při vykreslování formuláře ze šablony pomocí {pageForm}
<?php
namespace AdminModule;
use Nette,
Nette\Debug,
Nette\Forms,
Nette\Environment,
Nette\Application\AppForm,
Nette\Web\Html,
Nette\Forms\Form,
Nette\Forms\TextArea ,
Nette\Forms\Controls;
class TinyMCEControl extends TextArea /*implements Nette\Forms\IFormControl*/
{
public static function addTinyMCEControl(Form $form, $name, $label = NULL, $cols = 40, $rows = 10)
{
return $form[$name] = new self($form, $label, $cols, $rows);
}
}
Nette\Forms\FormContainer::extensionMethod('addTinyMCE', array('AdminModule\TinyMCEControl', 'addTinyMCEControl'));
...
...
...
function createComponentPageForm()
{
$form = new AppForm;
...
$TMCEditor = $form->addTinyMCE('content','',50,60);
/*
**Zde** $TMCEditor = $form->addTextArea('content','',50,60); **FUNGUJE**
*/
...
?>
Z kódu jsem už odstranil veškerou funkčnost komponenty, podle mne by se teď měla chovat stejně jako TextArea. Když místo addTinyMCE napíšu addTextArea, funguje to. Přitom podobně tvořená komponenta ve FrontModule mi funguje bez problémů.
Obrázek: CallStack
Předem díky za náměty na opravu.
Editoval Martin (16. 3. 2011 17:59)
- Martin
- Člen | 171
Tak si rovnou odpovím sám, třeba to někomu ušetří půl dne práce. Až po pečlivém procházení zdrojových kódů Nette a zjišťování, proč vlastně se to cyklí, jsem zjistil, že mám ve volání konstruktoru parametr navíc. Místo return $form[$name] = new self($form, $label, $cols, $rows); má být return $form[$name] = new self($label, $cols, $rows);
Editoval Martin (16. 3. 2011 21:24)