0
我有一個symfony實體具有枚舉類型字段,我想爲它生成一個表單類型。 我想知道正確的方法來做到這一點。Symfony枚舉類型與表單類型
這是我的實體:
<?php
namespace EvalBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* SessionEvaluation
*
* @ORM\Table(name="session_evaluation")
* @ORM\Entity(repositoryClass="EvalBundle\Repository\SessionEvaluationRepository")
*/
class SessionEvaluation
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, unique=true)
*/
private $name;
/**
* @var \DateTime
*
* @ORM\Column(name="startDate", type="datetime")
*/
private $startDate;
/**
* @var \DateTime
*
* @ORM\Column(name="endDate", type="datetime")
*/
private $endDate;
/**
* @var string
*
* @ORM\Column(name="type", type="string", columnDefinition="enum('annual', 'intermediate')")
*/
private $type;
/**
* One SessionEvaluation has Many PerformanceEvaluation.
* @ORM\OneToMany(targetEntity="PerformanceEvaluation", mappedBy="sessionEvaluation")
*/
private $performanceEvaluations;
/**
* One SessionEvaluation has Many Evaluation.
* @ORM\OneToMany(targetEntity="Evaluation", mappedBy="sessionEvaluation")
*/
private $evaluations;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set name
*
* @param string $name
*
* @return SessionEvaluation
*/
public function setName($name)
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName()
{
return $this->name;
}
/**
* Set startDate
*
* @param \DateTime $startDate
*
* @return SessionEvaluation
*/
public function setStartDate($startDate)
{
$this->startDate = $startDate;
return $this;
}
/**
* Get startDate
*
* @return \DateTime
*/
public function getStartDate()
{
return $this->startDate;
}
/**
* Set endDate
*
* @param \DateTime $endDate
*
* @return SessionEvaluation
*/
public function setEndDate($endDate)
{
$this->endDate = $endDate;
return $this;
}
/**
* Get endDate
*
* @return \DateTime
*/
public function getEndDate()
{
return $this->endDate;
}
/**
* Set type
*
* @param string $type
*
* @return SessionEvaluation
*/
public function setType($type)
{
$this->type = $type;
return $this;
}
/**
* Get type
*
* @return string
*/
public function getType()
{
return $this->type;
}
public function __toString() {
return $this->name;
}
}
這裏是formType:
<?php
namespace EvalBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class SessionEvaluationType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('Name', TextType::class, array(
'attr'=> array('class'=>'form-control')
))
->add('startDate', DateType::class, array(
'format' => 'yyyy MM dd'
))
->add('endDate')
->add('type', ChoiceType::class, array(
'choices' => array(
'Annuel' => true,
'Itérmidaire' => false,
),
'attr' => array('class' => 'dropdown')
))
->add('Lancer', SubmitType::class, array(
'attr' => array('class' => 'btn btn-primary')));
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'EvalBundle\Entity\SessionEvaluation'
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'evalbundle_sessionevaluation';
}
}
用枚舉類型的字段是:類型
我定義它作爲表單中的choiceType,這是在提交後將實體實例保存在數據庫中的一種好方法 表格 ?