带有Lexik Form Filter软件包的symfony2过滤器: [英] symfony2 filter with Lexik Form Filter bundle:
本文介绍了带有Lexik Form Filter软件包的symfony2过滤器:的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
表格类型:
namespace AgriHealth \AhpBundle\Form\Type\Clinic;
使用Symfony \ Component\Form\AbstractType;
使用Symfony \ Component\Form\FormBuilderInterface;
使用Symfony \ Component\OptionsResolver\OptionsResolverInterface;
$ b $ class ClinicFilterType extends AbstractType
{
public function buildForm(FormBuilderInterface $ builder,array $ options)
{
$ builder-> add('名称','filter_text');
public function getName()
{
return'item_filter';
public function setDefaultOptions(OptionsResolverInterface $ resolver)
{
$ resolver-> setDefaults(array(
'csrf_protection'=> false ,
'validation_groups'=> array('filtering')//避免与NotBlank()约束相关的消息
));
code $
$ b $控制器设置
public function indexAction(Request $ request)
{
$ em = $ this-> getDoctrine() - > getManager();
$ b $ entities = $ em-> getRepository('AgriHealthAhpBundle:Clinic') - > findAll();
$ filter = $ this-> renderFilter($ request);
$ b $ return $ this-> render('AgriHealthAhpBundle:Clinic:index.html.twig',array(
'entities'=> $ entities,
'form' => $ filter
));
$ b private function renderFilter(Request $ request)
{
$ form = $ this-> get('form.factory') - > create (新的ClinicFilterType());
$ b $ if($ request-> query-> has($ form-> getName())){
//手动绑定请求中的值
$ form - >提交($这个 - >获得( '请求') - >查询 - >获得($形式 - >的getName()));
//初始化查询生成器
$ filterBuilder = $ this-> get('doctrine.orm.entity_manager')
- > getRepository('AgriHealthAhpBundle:Clinic' )
- > createQueryBuilder('e');
//从给定的表单对象构建查询
$ this-> get('lexik_form_filter.query_builder_updater') - > addFilterConditions($ form,$ filterBuilder);
//现在看看DQL =)
var_dump($ filterBuilder-> getDql());
$ b $ return $ this-> render('AgriHealthAhpBundle:Clinic:filter.html.twig',array(
'form'=> $ form-> createView(),
));
$ p
可捕获的致命错误:类Symfony \ Component \Form\FormView的对象无法转换为字符串
我是否忽略了表单类中的某些内容?
解决方案你如何在 filter.html.twig
中渲染你的表单?也许在你的模板中有一个错字。基本的lexik过滤器表单呈现可能如下所示:
< form method =getaction =。>
{{form_rest(form)}}
< input type =submitname =submit-filtervalue =filter/>
< / form>
I have entity Clinic,
Form Type:
namespace AgriHealth\AhpBundle\Form\Type\Clinic;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class ClinicFilterType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name', 'filter_text');
}
public function getName()
{
return 'item_filter';
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'csrf_protection' => false,
'validation_groups' => array('filtering') // avoid NotBlank() constraint-related message
));
}
}
controller setup
public function indexAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$entities = $em->getRepository('AgriHealthAhpBundle:Clinic')->findAll();
$filter = $this->renderFilter($request);
return $this->render('AgriHealthAhpBundle:Clinic:index.html.twig', array(
'entities' => $entities,
'form' => $filter
));
}
private function renderFilter(Request $request)
{
$form = $this->get('form.factory')->create(new ClinicFilterType());
if ($request->query->has($form->getName())) {
// manually bind values from the request
$form->submit($this->get('request')->query->get($form->getName()));
// initialize a query builder
$filterBuilder = $this->get('doctrine.orm.entity_manager')
->getRepository('AgriHealthAhpBundle:Clinic')
->createQueryBuilder('e');
// build the query from the given form object
$this->get('lexik_form_filter.query_builder_updater')->addFilterConditions($form, $filterBuilder);
// now look at the DQL =)
var_dump($filterBuilder->getDql());
}
return $this->render('AgriHealthAhpBundle:Clinic:filter.html.twig', array(
'form' => $form->createView(),
));
}
I'm getting
Catchable Fatal Error: Object of class Symfony\Component\Form\FormView could not be converted to string
Have I overlooked something in the form class?
解决方案 How do you render your form in filter.html.twig
? Maybe there is a typo in your template. Basic lexik filter form render could look like this:
<form method="get" action=".">
{{ form_rest(form) }}
<input type="submit" name="submit-filter" value="filter" />
</form>
这篇关于带有Lexik Form Filter软件包的symfony2过滤器:的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文