createForBuilder($array) formulaire d'une table
Bonjour à tous,
Je rencontre un problème pour afficher le formulaire d'une table sql dans un createFormBuilder($array).
exemple:
controler
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| public function all1Action()
{
$em = $this->getDoctrine()->getManager();
$clientList = $em->getRepository("GillesBundle:client")->findAll();
$clientUnique = $em->getRepository("GillesBundle:client")->find(1);
$form = $this->createFormBuilder($clientUnique)
->add("prenom")
->add("nom")
->getForm();
return $this->render("GillesBundle:gilles:all1.html.twig", array("client" =>$clientList, "form" => $form->createView()));
} |
// view
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <h1>All clients</h1>
<form methos="POST" action="#">
<table>
{% for client in client %}
<tr>
<td> <input type="text" value="{{client.id}}"/> </td>
<td> <input type="text" value="{{client.prenom}}"/> </td>
<td> <input type="text" value="{{client.nom}}"/> </td>
</tr>
{% endfor %}
<table>
<input type="submit"/>
</form>
{{form(form)}} |
si je tente un $form = $this->createFormBuilder($clientList) pour tenté de récupérer toute les lignes de ma table cela ne fonctionne pas.
Mon but est de récupérer dans un formulaire dans des inputs toute les lignes de ma table afin de pouvoir y faire des modifications hors il me faut un id unique .
Merci pour votre aide.
Gilles
formulaire éditable sans form builder chose que je cherche à faire
Bonjour à tous,
Je rencontre certain problèmes pour comprendre les arrays collection doctrine sur mes entities et arrays collection des formulaires comment comprendre les 2.
Je vous donne un nouvelle exemple de ce que je cherche à réaliser:
routes
Code:
1 2 3 4
|
gilform_index:
pattern: /
defaults: { _controller: gilformBundle:Formulaire:index } |
controller
Code:
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
|
<?php
namespace formulaire\gilformBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use\Symfony\Component\HttpFoundation\response;
use formulaire\gilformBundle\Entity\client;
class FormulaireController extends Controller
{
public function indexAction()
{
$em = $this->getDoctrine()->getManager();
$client = $em->getRepository("gilformBundle:client");
$form = $client->findAll();
$print = print_r($this->getRequest()->request,true);
if($this->getRequest()->getMethod()=="POST")
{
foreach ($form as $key => $value)
{
//update client
if(isset($_POST["check".$key]) || isset($_POST["delete".$key]))
{
$formModif = $client->find($value->getId());
if(isset($_POST["check".$key]))
{
$formModif->setPrenom($_POST["prenom".$key]);
$formModif->setNom($_POST["nom".$key]);
$em->persist($formModif);
}
// delete client
else
{
$em->remove($formModif);
}
}
}
// insert new client
if(!empty($_POST["prenomNew"]) || !empty($_POST["nomNew"]))
{
$newClient = new client();
$newClient->setPrenom($_POST["prenomNew"]);
$newClient->setNom($_POST["nomNew"]);
$em->persist($newClient);
}
$em->flush();
return $this->redirect($this->generateUrl("gilform_index"));
}
return $this->render('gilformBundle:formulaire:index.html.twig', array("form" => $form, "print" => $print));
}
}
?> |
view
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
<!doctype type="html"/>
<html>
<head>
<title>Formulaire éditable</title>
</head>
<body>
<h1>formulaire</h1>
<pre> {{print}} </pre>
<form method="post">
{% for client in form %}
<input type = "checkbox" name = "check{{loop.index0}}"/>
<input type = "checkbox" name = "delete{{loop.index0}}"/>
<input type = "text" name="prenom{{loop.index0}}" value="{{client.prenom}}"/>
<input type = "text" name="nom{{loop.index0}}" value="{{client.nom}}"/> <br>
{% endfor %}<br>
<input type = "text" name="prenomNew" /> <input type = "text" name="nomNew" /> <br>
<input type="submit"/>
</form>
</body>
</html> |
Entity client.php
Code:
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
<?php
namespace formulaire\gilformBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* client
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="formulaire\gilformBundle\Entity\clientRepository")
*/
class client
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="prenom", type="string", length=255)
*/
private $prenom;
/**
* @var string
*
* @ORM\Column(name="nom", type="string", length=255)
*/
private $nom;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set prenom
*
* @param string $prenom
* @return client
*/
public function setPrenom($prenom)
{
$this->prenom = $prenom;
return $this;
}
/**
* Get prenom
*
* @return string
*/
public function getPrenom()
{
return $this->prenom;
}
/**
* Set nom
*
* @param string $nom
* @return client
*/
public function setNom($nom)
{
$this->nom = $nom;
return $this;
}
/**
* Get nom
*
* @return string
*/
public function getNom()
{
return $this->nom;
}
} |
J'ai vu un tuto qui permet de déclarer dans un formBuilder un input en array collection l'object d'une autre entity mais une pas une boucle de lignes de même d'une autre entity et non d'un même object.
donc comment boucler dans un form builder x attributs de ma class entity par ligne dans la dite class entity puisque mon form builder pointera en $option sur l'array de mon entity.
Merci par avance car la je calle
1 pièce(s) jointe(s)
comment réaliser une liste éditable dans un formbuilder
J'ai du mal avec les array collections et collections
Ce que je cherche à faire ressemblerait à cela sur une seul table
Pièce jointe 156165
J'ai suivi le tutorial de nicolas avec un array collection dans l'entité et le formtype de plus, plus haut on me propose de déclarer une collection dans le createform avec variable $clientliste $clientliste serait il un findAll() de ma liste client???
Ce que j'ai vu jusque là c'est instancier une class dans une autre hors comment instancier une class sur elle même ou dois je faire autrement.
merci de m'aider je suis un peu perdu