Suche nach documentNumber geht nicht

Tach zusammen,

ich möchte die Order-Suche im Admin erweitern.
Dabei teste ich noch wie das Criteria angepasst werden muss.
Leider scheint der Filter keine Auswirkungen zu haben.

Die Erweiterung sieht so aus:

public function onEntitySearchedEvent(EntitySearchedEvent $event): void
{
    $definition = $event->getDefinition();
    $criteria = $event->getCriteria();
    if($definition->getEntityName() === 'order' && $criteria->getTerm()){
        $criteria->addFilter(
            new ContainsFilter('documents.config.documentNumber', $criteria->getTerm())
        );
    }
}

Auch den Filter direkt in “documents” zu setzen hat keine Auswirkungen:

$criteria->getAssociation('documents')->addFilter(
    new ContainsFilter('config.documentNumber', $criteria->getTerm())
);

Führt man den Filter in “document” (Dokumentenübersicht in einer Bestellung) aus, geht das auch nicht:

if($definition->getEntityName() === 'document' && $criteria->getTerm()){
    $criteria->addFilter(
        new ContainsFilter('config.documentNumber', $criteria->getTerm())
    );
}

“documents.config” ist ein JsonField.
Kann man keine Filter in JsonField setzen?

// edit
Das Problem wurde gefunden.

~ closed ~

1 „Gefällt mir“

Hallo @pino ,

ich habe ein ähnliches Problem, könntest du bitte deine Lösung mit uns teilen.

Beste Grüße

hi, klar.
kurz gesagt es geht nicht, da EntitySearchedEvent mit clone arbeitet und man Criteria nicht erweitern kann.
ich habe dann die globale suche mit dem typ „Dokumente“ erweitert.
darüber ging die dokumentensuche anstatt per PHP.
quellcode kannst du dir ansehen unter: