problem s AppForm od rev259
- edke
- Člen | 198
Zdar David.
Po nahodeni revizie 259 (predtym som pouzival tusim rev254) mam problem v nasledujucej situacii:
V presenteri mam jednoduchy AppForm, ktory neobsahuje ziaden element okrem 3 submit tlacitok (pouzivam to po formulari na preview kosika a dalsiu navigaciu tam a spat):
$form= new AppForm($this, 'confirmform');
$form->addSubmit('ok', 'Odoslať objednávku')
->onClick[] = array($this,'confirm_onApply');
$form->addSubmit('cancel', 'Spať ku obj. formuláru')
->onClick[] = array($this,'confirm_onCancel');
$form->addSubmit('shop', 'Pokračovať v nákupe')
->onClick[] = array($this,'cart_onShop');
$this->template->form= $form;
Ak pouzijem sablonu takto:
{$form}
vysledkom je, ze sa totalne zlozi apache pocas requestu, ziadna chyba, ziaden vystup. Mam problem to odladit, pretoze ak pouzijem v Eclipse PDT Debugger cez Xdebug, tak mi to prelezie bez problemov. Ak znovu skusim stranku vyrenderovat bez zapnuteho Xdebug, zlozi sa to rovnako.
Skusal som to aj na inom servri, rovnake spravanie.
Ak ale sablonu prepisem nasledovne, vsetko ide bez problemov:
{$form->render('begin')}
{$form->render('body')}
{$form->render('end')}
<!-- alebo -->
{$form->render()}
- edke
- Člen | 198
Takze nedalo mi to a hrabal som sa s tym dalej. Dosiel som k tomuto:
- viacero zdrojov ukazuje na problemy s __toString() v php 5.2.4 (PHP Bug #47522)
- problemovy riadok, ktory vyhodi segfault je tu
- k zmene doslo v TemplateHelpers.php v revizii 257
- ak upravim renderer podla kodu nizsie, k segfault nedojde
- rovnako sa segfault-u vyhnem, ak volam $form->render()
- snazil som sa aj o segfault aj v komplikovanejsom formulari s vacsim poctom elementov, so zapnutou/vypnutou validaciou, so zapnutymi/vypnutymi skupinami .. nedosiel som k tomu preco v jednom pripade sa segfault vyskutne a v druhom nie. zeby to bolo v dlzke vygenerovaneho stringu z __toString() ??
$form->render(' ');
$form->renderer->clientScript->validateScript = ' ';
Toz vyzera to skor, ze problem je prave s konkretnym PHP a nie u teba. Navyse mam workaround (namiesto {$form} v sablone pouzit {$form->render()}), takze to nie je az taka top priorita dalej tym padom pre mna.
- edke
- Člen | 198
vlki wrote:
Vím, že to není objasnění chyby, ale zkoušel jsi ten formulář vykreslovat jako:
{!$form}
Řekl bych, že zakopaný pes bude v tom. Mimochodem, vytvoří se cache té šablony? Nebo opravdu nic?
Ano, dalsi workaround, kedze sa vola priamo <?php echo $form ?>, teda $form->__toString() a nie <?php echo TemplateHelpers::escapeHtml($form) ?>, kde dojde k segfault na vyssie spominanom riadku.