symfony2 entity-field-type-Fehler
Ich habe nicht gefunden eine solide Beispiel, wie dies zu tun.
Habe ich meine entity-Schild, das kann mehr als 1 ShieldTypes. Was ich will zu tun ist, erstellen Sie ein Formular, erstellt ein neues Schild mit verschiedenen Shieldtypes.
Dies ist mein code, ich weiß ehrlich nicht wo mein Fehler:
Fehler:
Entities passed to the choice field must be managed
500 Internal Server Error - FormException
Armory\SearchBundle\Entity\Shield.php
namespace Armory\SearchBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Armory\SearchBundle\Entity\Shield
*
* @ORM\Table(name="shield")
* @ORM\Entity
*/
class Shield
{
/**
* @var integer $id
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string $name
* @ORM\Column(name="name", type="string", length=45, nullable=false)
*/
private $name;
/**
* @var integer $defense
* @ORM\Column(name="defense", type="integer", nullable=false)
*/
private $defense;
/**
* @var boolean $active
* @ORM\Column(name="active", type="boolean", nullable=false)
*/
private $active;
/**
* @ORM\ManyToMany(targetEntity="ShieldTypes")
* @ORM\JoinTable(name="i_orbs_type",
* joinColumns={@ORM\JoinColumn(name="id_orb", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="id_type", referencedColumnName="id")}
* )
* @var ArrayCollection $types
*/
protected $types;
public function __construct(){
$this->types = new \Doctrine\Common\Collections\ArrayCollection();
}
public function getTypes(){
return $this->types;
}
public function getId()
{
return $this->id;
}
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
public function setDefense($defense)
{
$this->defense = $defense;
}
public function getDefense()
{
return $this->defense;
}
public function setActive($active)
{
$this->active = $active;
}
public function getActive()
{
return (bool)$this->active;
}
}
Armory\SearchBundle\Form\ShieldType.php:
namespace Armory\SearchBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
class ShieldType extends AbstractType{
public function buildForm(FormBuilder $builder, array $options){
$builder->add('name','text');
$builder->add('defense','integer');
$builder->add('active','checkbox');
$builder->add('types','entity',
array(
'class'=>'Armory\SearchBundle\Entity\ShieldTypes',
'query_builder'=> function($repository){
return $repository->createQueryBuilder('t')->orderBy('t.id', 'ASC');
},
'property'=>'name', )
);
}
public function getName(){
return 'shield';
}
public function getDefaultOptions(array $options){
return array('data_class'=>'Armory\\SearchBundle\\Entity\\Shield');
}
}
Armory\SearchBundle\Entity\ShieldTypes.php
namespace Armory\SearchBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* SOA\CRMBundle\Entity\ShieldTypes
*
* @ORM\Table(name="orbs_type")
* @ORM\Entity
*/
class ShieldTypes
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string $name
*
* @ORM\Column(name="name", type="string", length=45, nullable=false)
*/
private $name;
/**
* @var string $title
*
* @ORM\Column(name="title", type="string", length=45, nullable=false)
*/
private $title;
public function getId()
{
return $this->id;
}
public function setName($name)
{
$this->name = $name;
}
public function getName()
{
return $this->name;
}
public function setTitle($title)
{
$this->title = $title;
}
public function getTitle()
{
return $this->title;
}
}
Kann es ein wenig verwirrend, aber:
Shield entity (database)
ShieldTypes entity (database)
ShieldType form (abstracttype)
Danke...
- ist das problem irgendwo in der Nähe return $repository->createQueryBuilder('t')->orderBy ("'t".id', 'ASC') ?
- Ich habe das problem gefunden, ich poste es, wenn 4 Stunden vergangen. (kann nicht selbst beantworten atm)
- Herzlichen Glückwunsch auf der Suche nach einer Lösung, war das problem auf die Lehre oder Symfony-Seite?
- user-side, es ist immer auf der Benutzer-Seite, richtig? 🙂
- Auf jeden Fall. Thx für das posten deiner Lösung und willkommen zu SO
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also das problem war, dass ich Sie nicht erstellen Sie ein repository. Ich habe es (siehe code am Ende) und ich habe noch 'Entitäten übergeben, um die Auswahl-Feld muss bewirtschaftet werden" Fehler.
Dann setze ich multiple true:
Ich hoffe, jemand findet das nützlich, denn wenn ich hatte, würde es einfacher gewesen.
Code für mein repository: