Symfony:创建表单时出错(BirthdayType)和方法注意功能

时间:2016-04-21 21:40:09

标签: php symfony

我一直在努力创建一个人们可以在数据库中创建帐户的表单。

表格要求3件事: 名字,姓氏和出生日期(代码中的法语文本)。

我一直有这些错误:

  

属性“startDateTime”和方法“addStartDateTime()”/“removeStartDateTime()”,“setStartDateTime()”,“startDateTime()”,“__ set()”或“__call()”都不存在并在“AppBundle \ Entity \ Candidats”类中拥有公共访问权限。

这是因为我在创建它时没有在Entity中正确声明我的类型吗?

这是我的实体类:

    <?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Candidats
 *
 * @ORM\Table(name="candidats")
 * @ORM\Entity
 */
class Candidats
{
    /**
     * @var string
     *
     * @ORM\Column(name="nom", type="string", length=30, nullable=false)
     */
    private $nom;

    /**
     * @var string
     *
     * @ORM\Column(name="prenom", type="string", length=30, nullable=false)
     */
    private $prenom;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="datedenaissance", type="date", nullable=true)
     */
    private $datedenaissance;

    /**
     * @var integer
     *
     * @ORM\Column(name="idcand", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idcand;



    /**
     * Set nom
     *
     * @param string $nom
     *
     * @return Candidats
     */
    public function setNom($nom)
    {
        $this->nom = $nom;

        return $this;
    }

    /**
     * Get nom
     *
     * @return string
     */
    public function getNom()
    {
        return $this->nom;
    }

    /**
     * Set prenom
     *
     * @param string $prenom
     *
     * @return Candidats
     */
    public function setPrenom($prenom)
    {
        $this->prenom = $prenom;

        return $this;
    }

    /**
     * Get prenom
     *
     * @return string
     */
    public function getPrenom()
    {
        return $this->prenom;
    }

    /**
     * Set datedenaissance
     *
     * @param \DateTime $datedenaissance
     *
     * @return Candidats
     */
    public function setDatedenaissance($datedenaissance)
    {
        $this->datedenaissance = $datedenaissance;

        return $this;
    }

    /**
     * Get datedenaissance
     *
     * @return \DateTime
     */
    public function getDatedenaissance()
    {
        return $this->datedenaissance;
    }
public function getDateTime()
    {
        return $this->datedenaissance;
    }
    public function getStartDateTime()
    {
        return $this->datedenaissance;
    }
    public function startDateTime()
    {
        return $this->datedenaissance;
    }
    public function isStartDateTime()
    {
        return $this->datedenaissance;
    }
 public function hasStartDateTime()
    {
        return $this->datedenaissance;
    }
    public function addStartDateTime()
    {
        return $this->datedenaissance;
    }
    public function removeStartDateTime()
    {
        return $this->datedenaissance;
    }
public function setStartDateTime()
    {
        return $this->datedenaissance;
    }




    /**
     * Get idcand
     *
     * @return integer
     */
    public function getIdcand()
    {
        return $this->idcand;
    }
}

我修改的表单创建中的代码片段:

<?php

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\BirthdayType;

class CandidatsType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('nom')
            ->add('prenom')
            ->add('startDateTime', BirthdayType::class)
        ;
    }

    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\Candidats'
        ));
    }
}

1 个答案:

答案 0 :(得分:4)

I think the problem is with your properties names. In your class, there are nom, prenom and datedenaissance. And in the form there are nom, prenom and startDateTime. That's why the form doesn't find the property startDateTime, because it doesn't exist in the class.