Symfony 2 - Formulaire de sélectionner les options de base de données
Je suis débutant dans Symfony 2.
J'essaie d'afficher un formulaire avec un "select" où est le "options" à partir d'une requête.
J'ai mis le code suivant dans mon formulaire :
use Doctrine\ORM\EntityRepository;
use Bloc\MainBundle\Entity\Table;
use Bloc\MainBundle\Entity\Table2;
public function addAction(Request $request)
{
$table = new Table();
$form = $this->createFormBuilder($table , array('attr' => array('role' => 'form')))
->add('num', 'integer', array('label' => 'Numéro', 'attr' => array('class' => 'form-control')))
->add('nom_emetteur', 'text', array('label' => 'Emetteur', 'attr' => array('class' => 'form-control')))
->add('numero', 'entity', array('class' => 'BlocMainBundle:Table2', 'property' => 'numero'))
...
}
Et j'ai l'erreur suivante:
Neither the property "numero" nor one of the methods "getNumero()", "isNumero()", "hasNumero()", "__get()" or "__call()" exist and have public access in class "Bloc\MainBundle\Entity\Table".
Je comprends que l'erreur me dit que "numero" n'est pas dans la Table d'entité mais je m'interroge sur l'entité de Table2.
Je dois rater quelque chose, mais je ne sais pas où ...
Ma définition de l'entité ressemble à ceci :
Tableau 1:
<?php...
class Table
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var integer
*
* @ORM\Column(name="num", type="integer")
*/
private $num;
//Getter and setter...
}
Tableau 2
<?php
namespace Bloc\MainBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Fournisseur
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Bloc\MainBundle\Entity\Table2Repository")
*/
class Table2
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var integer
*
* @ORM\Column(name="numero", type="integer")
*/
private $numero;
/**
* Set numero
*
* @param integer $numero
* @return Fournisseur
*/
public function setNumero($numero)
{
$this->numero = $numero;
return $this;
}
/**
* Get numero
*
* @return integer
*/
public function getNumero()
{
return $this->numero;
}
...
}
Pouvez-vous m'aider s'il vous plaît ?
Vous pouvez poster votre entité définitions pour
"numero" devrait probablement être une clé étrangère pour la Table2. Besoin de voir votre entités pour répondre à cette question.
Je n'ai pas encore créé un lien entre mes deux entités, je le fais plus tard
Table
et Table2
?"numero" devrait probablement être une clé étrangère pour la Table2. Besoin de voir votre entités pour répondre à cette question.
Je n'ai pas encore créé un lien entre mes deux entités, je le fais plus tard
OriginalL'auteur jlafforgue | 2013-09-27
Vous devez vous connecter pour publier un commentaire.
Si vous n'avez pas la relation, alors vous devez dire à la FormBuilder de ne pas l'associer à un champ.
Pour accomplir les options que vous voulez (à l'aide de plusieurs champs pour l'option de texte), vous devez utiliser un
choice
type et de construire votre liste d'options comme ceci:Si je veux retourner à mes options deux propriétés de mon tableau que le nombre et le nom, je suis obligé de créer un setter et getter dans mon entité Table2 ?
Pas sûr que je suis tout à fait comprendre. Vous essayez d'utiliser les valeurs dans le champ
numero
deTable2
pour les options d'un champ select, correct?J'ai eu du mal à trouver les mots justes ; je voudrais que ce résultat dans mon rendu
<select ...><option ...>112 - name1</option><option>113 - name2
; non seulement "numero", mais "numero" et "nom" qui sont deux domaines dansTable2
Ok, donnez-moi une minute ou deux et je vais mettre à jour ma réponse avec la bonne façon d'utiliser un champ que la valeur et l'autre comme l'option texte.
OriginalL'auteur Ken Hannel
vous pouvez utiliser cette solution. Son simplement et de la documentation de symfony2. Je m utiliser cette
Est comme dans des documents écrits:
Utiliser cette solution en raison de ses natif de symfony solution pour ce cas 🙂
Je l'espère, je vais vous aider, vous ou les autres personnes
OriginalL'auteur Franky238
Si vous avez besoin d'informations de la table, vous pouvez créer un constructeur dans votre
Form class
dans votre contrôleur :
dans votre classe de formulaire
et fait! vous l'utilisez:
OriginalL'auteur jjoselon