我有一个带有标签的表单,这些标签与类别字段
有依赖关系Category 1
tag a
tag b
tag c
Category 2
tag d
tag e
tag f
...
加载页面时,我有" 类别1 "和" 他的标签列表" 然后,当我将类别更改为" 类别2 "时,我会通过ajax替换标记列表。
当我提交表单时,我得到" 此值无效"。我想这是因为表单期望初始列表中的值。
所以,我不知道如何继续验证我的标签。
以下是生成表单
的代码->add('category', null, array(
'choices' => $this->cat_tree,
'label' => 'Category',
'required' => true,
'empty_value' => '',
))
->add('tags', 'entity', array(
'class' => 'MyappServicesBundle:Category',
'query_builder' => function(EntityRepository $er) use ($parent_id) {
return $er->createQueryBuilder('c')
->where('c.parent = :parent_id')
->setParameter('parent_id', $parent_id)
->orderBy('c.title', 'ASC');
},
'required' => false,
'multiple' => true,
'expanded' => true,
'label' => 'Tags',
))
这是替换标签列表的ajax代码
$('#myapp_servicesbundle_category').change(function() {
$.post(
"/tag/ajax/search",
{ parent_id: $(this).val() },
function( data ) {
var newtags = '';
jQuery.each( data, function( i, val ) {
newtags += ' <input type="checkbox" value="'+val.id+'" name="myapp_servicesbundle[tags][]" id="myapp_servicesbundle_tags_'+val.id+'">';
newtags += ' <label for="myapp_servicesbundle_tags_'+val.id+'">'+val.label+'</label>';
});
$('#myapp_servicesbundle_tags').html(newtags);
}, "json"
);
});
提前感谢您的帮助
答案 0 :(得分:1)
根据我的经验,你必须在Symfony中使用eventListener。文档中有一个非常明显的例子(英语比法语更详细,要小心)。