2012-03-26 7 views
0

So implementieren Sie ein Suchformular in einer Viele-zu-viele-Beziehung zwischen Entitäten.Hinzufügen eines Suchformulars in einer manyToMany-Relation-Schnittstelle

Ich möchte Elemente von einer Entität zuvor suchen, um sie zu meiner anderen Entität hinzuzufügen. Ich verwende eine lange Liste von Artikeln (Produkt), die ich mit Shops verknüpfen muss, und ich kann keine einfache Listbox verwenden, um meine Artikel auszuwählen.

Ich brauche Sie, um mich auf ein Tutorial oder eine Erklärung zu zeigen, um mit diesem Schnittstellenproblem umzugehen.

Das Ziel ist, ein Minimum von Javascript zu verwenden

+0

Sie einen Auswahl Feldtyp mit der mehrere Option nutzen könnte. – windm

+0

Ich habe fast 10 000 Artikel ... Das Auswahlfeld wird in diesem Fall nicht funktionieren. Ich muss das Ergebnis zuerst filtern, um zu vermeiden, zu viele Elemente zu haben – Chopchop

Antwort

0

Ich verbrachte viel von der Zeit, die beste Lösung, um herauszufinden, den Kompromiss zwischen Wiederverwendbarkeit, Leistung und Ergonomie und ich eine

ich auf diese Weise tat schöne Lösung gefunden zu machen:

  • ich habe ein Feld benutzerdefiniertes Formulars, das eine Sammlung wie Entität Feldtyp zeigen, aber ich gebe Feldnamen, die ich in einem schönen Tisch zeigen will:

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

  • Dann habe ich einen generischen Suchdienst erstellt, der die zu suchende Entität eingibt. Das Ergebnis wird in einem Popup paginiert gesendet.

  • Schließlich habe ich einen Controller auf mein neues Feld bezogenen Aktionen wie Add zu verwalten, entfernen Sie es

Das ist die für die Logik.

Ich kann nicht wirklich die Arbeit teilen, da es wirklich abhängig von meinem Rahmen ist (abhängig von Suchdienst, Layout, etc ...)

0

würde ich vorschlagen, eine Ansicht zu erstellen, in dem Sie eine Kategorie auswählen könnten oder Ihre Suchbedingung definieren. Und eine zweite Ansicht, in der Sie nur Produkte mit der zuvor ausgewählten Bedingung anzeigen. In Ihrem zweiten Blick könnte man ein entity Field Type (http://symfony.com/doc/current/reference/forms/types/entity.html#query-builder) verwenden und eine benutzerdefinierte Abfrage für die Entitäten liefern wie:

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); 
    }, 
)); 

Diese Lösung erfordert nicht gar JavaScript.

+0

Es klingt wie es ist, was ich suche. Danke für deine Antwort. Ich überprüfe das – Chopchop

Verwandte Themen