如何在实体之间的多对多关系中实现搜索表单。
我想先从实体中搜索项目,然后将它们添加到我的其他实体。我正在使用一长串商品(产品),我需要链接到商店,我不能使用简单的列表框来选择我的商品。
我需要你指点教程或解释这个界面问题的任何解释。
目标是使用最少的javascript
答案 0 :(得分:0)
我建议您创建一个视图,您可以在其中选择类别或定义搜索条件。第二个视图,您只能按先前选择的条件显示产品。在第二个视图中,您可以使用entity Field Type
(http://symfony.com/doc/current/reference/forms/types/entity.html#query-builder)并为以下实体提供自定义查询:
use Doctrine\ORM\EntityRepository;
// ...
$builder->add('users', 'entity', array(
'class' => 'AcmeHelloBundle:Product',
'query_builder' => function(ProductRepository $er) {
return $er->createQueryBuilder('p')
->where('p.category = 1);
},
));
此解决方案根本不需要JavaScript。
答案 1 :(得分:0)
我花了很多时间试图找出最佳解决方案,在可重用性,性能和人体工程学之间做出妥协,我找到了一个很好的解决方案
我是这样做的:
我创建了一个自定义表单字段,它显示了一个类似于实体字段类型的集合,但是我传递了我想在一个漂亮的表中显示的字段名称:
->add('products','reflist',array( 'columns'=>array('name','cost','description'), 'actions'=>array('select'=>true,'remove'=>true), 'entityName'=>'VendorProductBundle:Product', 'searchForm'=> 'Vendor\ProductBundle\Form\ProductSearchType' ));
然后我创建了一个通用搜索服务,它接受输入要搜索的实体。结果以弹出的方式发送。
最后,我创建了一个与我的新字段相关的控制器来管理添加,删除等操作
这就是逻辑。
我无法真正分享这项工作,因为它真的依赖于我的框架(取决于搜索服务,布局等......)