clonovaný formulář netiskne body formuláře

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

Mám tak trochu problém s vykreslováním clonovaného formuláře. Pokud ho naklonuji tak se vykreslí pouze begin a end sekce. $form->render('body') je NULL viz příklad:

Presenter:

<?php
class TestPresenter extends Presenter{

	public function createComponentTest(){
		$out = new AppForm();
		$out->addText('name', 'Name');
		$out->addSubmit('send', 'Save');
		$out->onSubmit[] = array($this, 'sendMethod');
		return $out;
	}

	public function actionDefault(){
		$testItems = array(array('name' => 'one'), array('name' => 'two'));

		foreach ($testItems as $key => $val){
			$clon = clone $this['test'];
			$clon->setDefaults(array('name' => $val['name']));
			$cloneOut[$key]['form'] = $clon;
		}

		foreach ($testItems as $key => $val){
			$form = $this['test'];
			$form->setDefaults(array('name' => $val['name']));
			$out[$key]['form'] = $form;
		}

		$this->template->cloneOut = $cloneOut;
		$this->template->out = $out;
	}
}
?>

Šablona:

{block #content}
	{foreach $out AS $item}
		{!$item['form']}
	{/foreach}
	{foreach $cloneOut AS $item}
		{!$item['form']->render('begin')}
		{!$item['form']['name']->control}
		{!$item['form']['send']->control}
		{!$item['form']->render('end')}
	{/foreach}
{/block}

První cyklus se vykreslí v pořádku a má všechny ‚sekce‘ formuláře.
Druhý cyklus se také vykreslí v pořádku pokud je formulář vypisován ručně. Pokud by se, ale v druhém cyklu manuálně nevypsal obsah ‚body‘ a pouze by se zavolalo ‚{!$item['form‘]->render(‚begin‘)}' nebo {!$item[‚form‘]} tak se vykreslí pouze begin a end sekce formuláře.

Honza Kuchař
Člen | 1661
+
0
-

S klonováním formulářů jsou problémy. Zatím to není dořešené.

DocX
Člen | 154
+
0
-

Možná kdyby jsi udělal „deep clone“, tzn. naklonovat i všechny vnořené objekty, tak by to šlo. Nevím ale jestli je z venku formuláře možné se k nim dostat.

redhead
Člen | 1313
+
0
-