我在SonataAdminBundle中使用了Ajax来填充“zipcode”字段中的选择字段“city”。 用户将首先在相关字段中输入zipcode的值,然后ajax将在选择字段中刷新与此zipcode相关的所有城市。
此过程对我有用,但是当我提交时,城市字段始终会收到验证错误“此值无效”
这是我的实体:
/**
* @ORM\ManyToOne(targetEntity="Insee")
* @ORM\JoinColumn(name="adresse_ville_id", referencedColumnName="id")
**/
private $adresseVille;
/**
* @var string
*
* @ORM\Column(name="adresse_code_postal", type="string", length=255)
* @Gedmo\Translatable
*/
private $adresseCodePostal;
这是我的管理类:
/**
* @param \Sonata\AdminBundle\Form\FormMapper $formMapper
*
* @return void
*/
protected function configureFormFields(FormMapper $formMapper)
{
//.....
$formMapper
->add('adresseCodePostal')
->add(
'adresseVille',
'entity',
array(
'class' => 'SimuleoAdminBundle:Insee',
'choices' => array(),
'property' => 'commune',
'empty_value' => 'Ville'
)
)
//.....
这是javascript代码:
$("#{{ admin.uniqId }}_adresseCodePostal").blur(function () {
var zipCode = $("#{{ admin.uniqId }}_adresseCodePostal").val();
$.ajax({
url: "http://simuleo-dev.local/app_dev.php/api/villes/" + zipCode,
async: false,
dataType: "json",
success: function (result) {
console.log(result);
var i= 0;
var html = "";
if (result == "Empty") {
$("#{{ admin.uniqId }}_adresseCodePostal").css("border-color", "#ff0000");
$("#{{ admin.uniqId }}_adresseCodePostal").val("No city !!");
}
else {
$("#{{ admin.uniqId }}_adresseCodePostal").css("border-color", "#aaaaaa");
for (i=0;i<result.length;i++){
html += '<option value="' + result[i].id + '">' + result[i].commune + '</option>';
}
}
$("#{{ admin.uniqId }}_adresseVille").empty();
$("#{{ admin.uniqId }}_adresseVille").append(html);
}
});
});
你知道如何解决它吗?
提前谢谢。