Bonjour,

J'ai un soucis sur symfony 2.1, je dois répéter un formulaire un certain nombre de fois le souci est que le "name" et le "id" de mes textarea se répète. Donc lors de la sauvegarde n'est sauvegarder et propager aux autre form uniquement la valeur du dernier.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
 
//Dans mon controller
$form_html = array();
$entity_collection = array();
$render_site_text = array();
foreach ($site_info_ret as $tmp_lang => $tmp_site_info)
{
	if($tmp_lang=='en')
	{
		$temp_form = array();
		$temp_render = array();
		$entity_html = array();
		foreach ($tmp_site_info as $tmp_site_text)
		{
			$tmp = $this->container->get('form.factory')->create(new HtmlContentForm(), $tmp_site_text->getHtmlContent());
			$temp_form[$tmp_site_text->getSiteInfoType()->getId()] = $tmp;
			$temp_render[$tmp_site_text->getSiteInfoType()->getId()] = $temp_form[$tmp_site_text->getSiteInfoType()->getId()]->createView();
			$entity_html[$tmp_site_text->getSiteInfoType()->getId()] = $tmp_site_text->getHtmlContent();
 
		}
		$form_html[$tmp_lang]=$temp_form;
		$render_site_text[$tmp_lang]=$temp_render;
		$entity_collection[$tmp_lang] = $entity_html;
	}
}
 
$form = $this->container->get('form.factory')->create(new SiteForm(), $site);
 
$request = $this->container->get('request');
 
if ($request->getMethod() == 'POST') 
{
	$form->bindRequest($request);
 
	if ($form->isValid())
	{
		$em->persist($site);
		$em->flush();
		if (isset($site_id)) 
		{
			$message='Site modifié avec succès !';
		}
		else 
		{
			$message='Site ajouté avec succès !';
		}
	}
	foreach ($form_html as $tmp_lang=>$lang_form_html)
	{
		foreach ($lang_form_html as $tmp_type=>$html)
		{
			$html->bindRequest($request);
			if ($html->isValid())
			{
				$em->persist($entity_collection[$tmp_lang][$tmp_type]);
				$em->flush();
				if (isset($site_id))
				{
					$message='Site modifié avec succès !';
				}
				else
				{
					$message='Site ajouté avec succès !';
				}
			}
		}
	}
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
//Dans mon form
 
class SiteForm extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {        
        $builder
            ->add('site_name');
    }
 
    public function getName()
    {
        return 'site';
    }    
}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
//Dans mon twig
<form action="" method="post" {{ form_enctype(form) }}>
    {{ form_widget(form) }}
    {% for lang, forms in form_html %}
    	{% for type, form in forms %}
   			{{ form_label(form.content, lang ~ ' ' ~ type ) }}
    		{{ form_widget(form) }}
    	{% endfor %}
    {% endfor %}
    <input type="submit" />
</form>
Je commence à être à court d'idée.

Bonne journée.


EDIT:

J'ai résolu mon soucis en utilisant le System de collection de symfony pour ceux qui tombent sur le même problème voici l'explication nécessaire:
http://symfony.com/doc/2.0/cookbook/...llections.html