Custom criteria in listing / search

Hallo,

Wir haben  einige zusätzliche Suchkriterien (criteria) erstellt, die standardmäßig auf der Listen- und Suchseite verwendet werden sollten.
Wenn wir als Test den Core Controller / Action hacken und eines unserer zusätzlichen Kriterien hinzufügen, funktioniert das gut, aber keine großartige Lösung.
Was ist die beste Lösung, um die benutzerdefinierten Kriterien zusätzlich zu Aktionen wie Listing / Index hinzuzufügen?

Hi,

mit dem CriteriaRequstHandler kannst du dein Condition-Objekt einfach hinzufügen: Elasticsearch development Hilft das schon weiter? Ansonsten einfach nochmal melden!

Best regards :wink:

Daniel

 

Hallo Daniel,

danke für den Link.
Wir haben den criteriaHandler-Code unten hinzugefügt und es scheint gut zu funktionieren.
 

namespace CustomPlugin\Bundle\SearchBundle;

use Enlight_Controller_Request_RequestHttp as Request;
use Shopware\Bundle\SearchBundle\Criteria;
use Shopware\Bundle\SearchBundle\CriteriaRequestHandlerInterface;
use Shopware\Bundle\StoreFrontBundle\Struct\ShopContextInterface;
use CustomPlugin\Bundle\SearchBundle\Condition\CustomCondition;

class CriteriaRequestHandler implements CriteriaRequestHandlerInterface
{
    /**
     * {@inheritdoc}
     */
    public function handleRequest(
        Request $request,
        Criteria $criteria,
        ShopContextInterface $context
    ) {
        $criteria->addCondition(new CustomCondition([0]));
    }
}

Wenn wir den Such-Handler nur in der Listing page, nicht in der SearchResults verwenden möchten; Würdest du empfehlen, im Handler einen Controller- / Aktionsnamencheck durchzuführen?

 

$actionName = $arguments->getRequest()->getActionName();
if ($actionName != 'listing') return;

 

Hallo,

ja das ist eine gute Idee. Allerdings solltest du dir den ControllerName aus dem Request holen und nicht den ActionName  Wink
Du solltest auch darauf achten, dass du den Widgets_Listing Controller berücksichtigst. 

Viele Grüße aus Schöppingen

cool Michael Telgmann