Добавить форму поиска в интерфейсе manyToMany Relation - PullRequest
0 голосов
/ 27 марта 2012

Как реализовать поисковую форму в отношениях «многие ко многим» между сущностями.

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

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

Цель - использовать минимум javascript

Ответы [ 2 ]

0 голосов
/ 27 апреля 2012

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

Я так и сделал:

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

    ->add('products','reflist',array(
                 'columns'=>array('name','cost','description'),
                 'actions'=>array('select'=>true,'remove'=>true),
                 'entityName'=>'VendorProductBundle:Product',
                 'searchForm'=> 'Vendor\ProductBundle\Form\ProductSearchType'
          ));
  • Затем я создал общую поисковую службу, которая принимает на вход сущность для поиска. Результат отправляется во всплывающем окне.

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

Вот и все по логике.

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

0 голосов
/ 29 марта 2012

Я бы предложил создать вид, в котором вы можете выбрать категорию или определить условия поиска. И второй режим просмотра, в котором отображаются только товары по ранее выбранному условию. Во втором представлении вы можете использовать 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.

...