我有两个实体Contact和Cities两个实体之间没有关系,当用户输入邮政编码时,使用脚本ajax自动填充组合框,一切都很好。
在添加到数据库时,我有此错误'此值无效。
class Contact
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="content", type="string", length=255, nullable=false)
*/
private $content;
/**
* @var string
*
* @ORM\Column(name="ville", type="string", length=255, nullable=false)
*/
private $ville;
/**
* @var string
*
* @ORM\Column(name="pays", type="string", length=255, nullable=false)
*/
private $pays;
ContactType:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('content',null,array('attr'=>array('class'=>'cp','maxenght'=>5)))
->add('ville',ChoiceType::class,array('attr'=>array('class'=>'ville',
)))
->add('pays',null,array('attr'=>array('class'=>'pays')))
->add('save', SubmitType::class)
;
}
VilleAction:
public function villesAction(Request $request, $cp){
if ($request->isXmlHttpRequest()){
$em = $this->getDoctrine()->getManager();
$villeCodePostal = $em->getRepository('JTCUserBundle:Villes')-
>findBy(array('villeCodePostal'=>$cp));
if ($villeCodePostal){
$villes = array();
$pays = array();
foreach ($villeCodePostal as $ville ){
$villes[] = $ville->getVilleNom();
$pays[]=$ville->getVilleDepartement();
}
// $ville=$villeCodePostal->getVilleNom();
// $pays=$villeCodePostal->getVilleDepartement();
}else{
$ville=null ;
// $pays=null ;
}
$response = new JsonResponse();
return $response->setData(array('ville'=>$villes, 'pays'=>$pays));//, 'pays'=>$pays));
}
}
答案 0 :(得分:0)
检查您是否在探查器中提交了某些内容。如果值为Submitted,则尝试在没有Ajax的情况下直接对相同的值进行sublit。我认为错误来自类型,$ ville期望一个字符串,你提交一个整数
答案 1 :(得分:0)
我重现了你的代码,我找到了解决问题的方法。
您可以为VilleEntity添加一个功能:
public function __toString(){
return $this->name;
}
在你的ContactType中你应该用这个代替ville字段:
->add('ville', EntityType::class, array(
'class'=>'AppBundle\Entity\Ville',
'choice_label'=>'name',
'label'=>'Ville',
'multiple'=>false
))
您也可以插入AJAX刷新。我希望这会对你有所帮助。