我的表单模板new.html.twig
上有一个选项,其中加载了实体的所有元素($categories
)。
控制器
public function newAction(Request $request){
$entity = new Playlist();
$form = $this->createCreateForm($entity);
$em = $this->getDoctrine()->getManager();
$categories = $em->getRepository('PublicartelAppBundle:Category')->getAllCategories();**
return $this->render('PublicartelAppBundle:Playlist:new.html.twig', array(
'categories' => $categories,
'entity' => $entity,
'form' => $form->createView(),
));
}
选择用于搜索的过滤器。
在我的树枝模板中选择,该模板显示从查询中获取的所有类别。
new.html.twig
<div class="form-group">
<label for="publicartel_appbundle_category_name">Search for category: </label>
<select id='selectCategory' class="form-control select2">
{% for category in categories %}
<option>
{{ category.name }}
</option>
{% endfor %}
</select>
</div>
我的twig模板中的JS,用于检测select选项中的更改以进行新查询并从所选选项中检索记录。
JS代码
$('#selectCategory').on('change', function () {
var optionSelect = $(this).val();
$.post("{{path('playlist_category') }}", {category: optionSelect},
function (filterContent) {
for (var content in filterContent.category_result) {
for (var name in filterContent.category_result[content]) {
var result = filterContent.category_result[content][name];
console.log(result);
$('#playlist_content_name').append('<option>' + result + '</option>');
}
}
}, 'json');
});
新查询的结果在playlist_category
路由中分配给另一个路由,并在我的twig模板中使用append方法选择此项。
<div class="form-group">
<label for="publicartel_appbundle_area_name">Content</label>
{{ form_widget(form.items.vars.prototype.content, { 'id': 'playlist_content_name', 'full_name': '', required: false, 'attr': {'class': 'form-control select2'}}) }}
</div>
此选择加载其他选项,但另一个选项用于过滤选项以防止加载所有选项。
我的问题是,当我尝试使用从搜索中获得的任何选项发送表单时,我收到一个错误,即模板中categories
变量new.html.twig
new.html.twig
}
然后,作为方法createAction,还进行模板public function createAction(Request $request){
$entity = new Playlist();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
$em = $this->getDoctrine()->getManager();
if ($form->isValid()) {
// $em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('playlist_show', array(
'id' => $entity->getId())));
}
$categories = $em->getRepository('PublicartelAppBundle:Category')->getAllCategories();
return $this->render('PublicartelAppBundle:Playlist:new.html.twig', array(
'categories' => $categories,
'entity' => $entity,
'form' => $form->createView(),
));
}
的渲染,同时在那里添加变量$ categories。
控制器
playlist_show
但是,在完成表单后,选择了返回搜索的select选项,而不是寻址/create
路径,将我引导至new.html.twig
形式的路径Date Price
01/07 10
02/07 20
Empty 30
03/07 40
。