Clonovani nform containeru

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

Potreboval bych naklovnovat NForm container, ktery je jiz vytvoreny. Napadlo me neco takoveho:

<?php
$sub = $form->addContainer('2');
// $form['1'] container, ktery potrebuju naklonovat
foreach($form['1']->getComponents() as  $component) {
	$sub->addComponent($component, $component->getName());
}
?>

Ale to mi vyhazuje vyjimku „Component already has a parent.“. Je moznost jak to obejit, zmenit rodice componenty ?

Editoval AceUnihoc (26. 8. 2008 2:59)

David Grudl
Nette Core | 8147
+
0
-

Chybí ti tam to klonování, tedy klíčové slovo clone. Např:

$form['2'] = clone $form['1'];
Mas3r
Člen | 116
+
0
-

Jaký je rozdíl mezi

<?php
$form['2'] = clone $form['1'];
?>
<?php
$form['2'] = $form['1'];
?>

Editoval Mas3r (26. 8. 2008 8:15)

LM
Člen | 206
+
0
-

http://php.net/clone

Editoval LM (26. 8. 2008 9:04)

phx
Člen | 651
+
0
-

Clone vytvori kopii objektu.

To druhe jen umisti jeden a ten samy objekt do 2 promennych (reference).

AceUnihoc
Člen | 19
+
0
-

David Grudl napsal(a):

Chybí ti tam to klonování, tedy klíčové slovo clone. Např:

$form['2'] = clone $form['1'];

Tohle me napadlo jako prvni, ale ma to jeden problem. Oba containery maji stejne „name“ tzn. name u inputu je u prvniho [1][adresa] a u druhyho taky [1][adresa] a ja potrebuju aby ten druhej mel [2][adresa].

Editoval AceUnihoc (26. 8. 2008 12:01)

David Grudl
Nette Core | 8147
+
0
-

v implementaci klonování byla chyba, opraveno

AceUnihoc
Člen | 19
+
0
-

David Grudl napsal(a):

v implementaci klonování byla chyba, opraveno

Supr ted uz to funguje tak jak ma.