我正在做一个表格,以便下注一场比赛的胜利者。 表单是经典表单:匹配 - 复选框(1,X或2)
我可以在创建新赌注时制作表单,但我无法通过预先选中的复选框来编辑赌注。
我的控制员:
public function parierAction()
{
$matchs = $this->getDoctrine()->getRepository('ParisParisBundle:Matchs')->findAll();
$user = $this->getUser();
foreach ($matchs as $match) {
$pari = new Pari();
$pari->setMatchs($match);
$pari->setUser($user);
$pari->setPari1X2(1);
$pariss[] = $pari;
}
$paris = array ('paris'=>$pariss);
$form = $this->createForm(new ParisType, $paris);
我的类型
class ParisType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('paris', 'collection', array(
'type' => new PariType()));
}
public function getName()
{
return 'paris_parisbundle_paristype';
}
和PariType,包含带复选框的选项
class PariType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('pari1X2', 'choice', array(
'choices' => array('1' => '1', '3' => 'X', '2' => '2'),
'required' => false,
'expanded' => true,
'multiple' => true,
));
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Paris\ParisBundle\Entity\Pari',
));
}
public function getName()
{
return 'paris_parisbundle_paritype';
}
我让这个例子尽可能简单。 如果我删除
$pari->setPari1X2(1);
我会看到复选框。 pari1X2属性是一个小整数。 但如果我这样说,我就得到了错误:
Expected an array.
我想与整数和选择存在冲突,但我无法解决它。
编辑:实体 Pari班 { / ** * @ORM \ ManyToOne(targetEntity =“Paris \ UserBundle \ Entity \ User”) * @ORM \ JoinColumn(nullable = false) * / private $ user;
/**
* @ORM\ManyToOne(targetEntity="Paris\ParisBundle\Entity\Matchs")
* @ORM\JoinColumn(nullable=false)
*/
private $matchs;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(name="datePari", type="date")
*/
private $datePari;
/**
* @var integer
*
* @ORM\Column(name="pari1X2", type="smallint")
*/
private $pari1X2;
class Matchs
{
/**
* @ORM\ManyToOne(targetEntity="Paris\ParisBundle\Entity\League")
* @ORM\JoinColumn(nullable=false)
*/
private $league;
/**
* @ORM\ManyToOne(targetEntity="Paris\ParisBundle\Entity\Team")
* @ORM\JoinColumn(nullable=false)
*/
private $teamlocal;
/**
* @ORM\ManyToOne(targetEntity="Paris\ParisBundle\Entity\Team")
* @ORM\JoinColumn(nullable=false)
*/
private $teamaway;
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;