我一直在尝试创建一个表单,人们可以在数据库中创建他们的帐户。
表格要求3件事:名字、姓氏和出生日期(代码中的法文文本)。
我一直有这些错误:
属性"startDateTime"和方法之一"addStartDateTime()"/"removeStartDateTime()","setStartDateTime()","startDateTime()","__set()"或"__call()"都不存在,并且在类"AppBundle\Entity\Candidats"中具有公共访问权限。
这是因为我在创建实体时没有在实体中正确声明我的类型吗?
这是我的实体类:
<?php
namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
/**
* Candidats
*
* @ORMTable(name="candidats")
* @ORMEntity
*/
class Candidats
{
/**
* @var string
*
* @ORMColumn(name="nom", type="string", length=30, nullable=false)
*/
private $nom;
/**
* @var string
*
* @ORMColumn(name="prenom", type="string", length=30, nullable=false)
*/
private $prenom;
/**
* @var DateTime
*
* @ORMColumn(name="datedenaissance", type="date", nullable=true)
*/
private $datedenaissance;
/**
* @var integer
*
* @ORMColumn(name="idcand", type="integer")
* @ORMId
* @ORMGeneratedValue(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 AppBundleForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentOptionsResolverOptionsResolver;
use SymfonyComponentFormExtensionCoreTypeBirthdayType;
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' => 'AppBundleEntityCandidats'
));
}
}
问题出在您的属性名称上。在你的班级里,有nom、prenom和datedenaissance。在形式上有nom,prenom和startDateTime。这就是窗体找不到属性 startDateTime 的原因,因为它在类中不存在。