我目前工作的用户创建形式。Symfony的3 - 动态表单 - ChoiceType阿贾克斯
用户都有一个配置文件属性:
/**
* Many Users have One profile
* @ORM\ManyToOne(targetEntity="ProjectBundle\Entity\User\Profile", inversedBy="users")
* @ORM\JoinColumn(name="profile_id", referencedColumnName="id")
*/
private $profile;
这个图谱是根据另一个选择(变化行动的jQuery)选择:
{% autoescape 'html'%}
{{ '<script id="tmpl_user_profile" type="text/x-jquery-tmpl">
<option value="${id}">${libelle}</option>
</script>'|raw }}
{% endautoescape %}
<script>
$('select#user_organisationMember').on('change',function(){
var value = this.value;
if (value == '') {
$('#user_profile').empty();
}
var urlAjax = "{{ path('admin_user_get_profile', { 'entity': "value" }) }}";
$.ajax({
url: urlAjax.replace("value",value),
method: "post"
}).done(function(msg){
$('#user_profile').empty();
$('#tmpl_user_profile').tmpl(JSON.parse(msg)).appendTo('#user_profile');
}) ;
});
</script>
在此之前一切运行正常! 根据其他选择,选择标签中的不同配置文件会发生很好的变化。
在页面上的到来,我想配置文件的列表是空的。
所以我使用的Symfony的FormEvent调整自己的状态。
这是我第一次使用FormEvent,我可能犯了一个错误!
我FormType:
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('lastname')
->add('firstname')
->add('gender',null,array('required'=>true))
->add('organisationMember',null,array(
'required' => true,
'choices' => $options['organisation'],
'group_by' => 'type_organisation',
'placeholder' => 'Choisissez votre organisation'
))
->add('job')
->add('mobile')
->add('phone')
->add('alert_failure')
->add('alert_full')
->add('alert_other')
->add('plainPassword', TextType::class, array('required' => true))
->add('email')
->add('profile', null, array(
'required' => true,
));
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$entity = $event->getData();
$form = $event->getForm();
if (!$entity || null === $entity->getId()) {
$form->remove('profile');
$form->add('profile', ChoiceType::class);
}
});
}
默认情况下,我的数据库的所有配置文件被加载在选择不得到错误“这个值是不正确”。
但我不希望用户看到所有的配置文件,所以我在事件中将其删除,并将该字段返回为空。
但我仍然收到错误“此值不正确”,因为实际上,由于基本选择是空的,表单没有找到输入的值。
我想有一个默认为空的选择,它填充在Ajax中,并且不会显示错误“This value is incorrect”。
我怎么能请你呢? 谢谢
是'profile'你的实体的成员与一个外键关系,或者是没有连接到你的数据库? –
有一个外键关系 –
你有没有试过在你的''profile''表单选项中设置'data => null'? –