2012-03-26 2 views
0

Как реализовать форму поиска во многих отношениях между объектами.Добавить форму поиска в интерфейсе manyToMany Relation

Я хочу искать элементы из объекта прежде, чем добавить их в другое лицо. Я использую длинный список элементов (продуктов), которые мне нужно связать с Магазинами, и я не могу использовать простой список для выбора моих товаров.

Мне нужно, чтобы вы указали мне учебник или какое-либо объяснение, чтобы справиться с этой проблемой интерфейса.

Цель состоит в том, чтобы использовать минимум JavaScript

+0

вы можете использовать тип выбора поля с множественным вариантом. – windm

+0

У меня есть почти 10 000 предметов ... Поле выбора в этом случае не будет работать. Мне нужно сначала отфильтровать результат, чтобы избежать большого количества предметов. – Chopchop

ответ

0

Я провел много о время, пытаясь выяснить, лучшее решение, чтобы сделать компромисс между повторным использованием, производительностью и эргономикой и я нашел хорошее решение

Я сделал это так:

  • Я создал поле пользовательской формы, которые показывают коллекцию как объектный тип поля, но я передать имена полей, которые я хочу показать в хорошей таблице:

    ->add('products','reflist',array(
          'columns'=>array('name','cost','description'), 
          'actions'=>array('select'=>true,'remove'=>true), 
          'entityName'=>'VendorProductBundle:Product', 
          'searchForm'=> 'Vendor\ProductBundle\Form\ProductSearchType' 
        ));

  • Затем я создал универсальную службу поиска, которая принимает входной объект для поиска. Результат отправляется в раскрывающемся списке.

  • Наконец, я создал контроллер, связанный с моим новым полем для управления действиями, как добавить, удалить

Вот именно для логики.

Я не могу разделить работу, так как это действительно зависит от моей структуры (в зависимости от поискового сервиса, расположения и т.д. ...)

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 на всех.

+0

Похоже, это то, что я ищу. Спасибо за Ваш ответ. Я проверяю – Chopchop

Смежные вопросы