problem s AppForm od rev259

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

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()}
vlki
Člen | 218
+
0
-

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?

edke
Člen | 198
+
0
-

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
+
0
-

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.