12. 12. 2018, 12:40

Hallo Zusammen,

ich bin aktuell halbwegs erfolgreich an der Entwicklung meiner ersten Extension.
Diese sieht wie folgt aus:

Ich Pflege via Backend Informationen zu dokumentarischen Filmen von Maschinen

Branche
Machinenbezeichnung
Produkt das auf der Maschine produziert wird
uvm.

Im Frontend wird mir eine Tabelle ausgeben die mir sämtliche Filme mit verschiedensten Eigenschaften auflistet.
Soweit so gut...

Nun habe ich erfolgreich eine Suche implementiert, die mir bereits nur die Spalte Branche (Industry) mit der Eingabe des Suchfelds abgleicht.

Beispiel:
Eingabe in das Suchfeld: HVAC
Ausgabe in der Tabelle: Alle Filme die der Branche HVAC zugeordnet wurden

Code (List.html)

<f:form class="form form-group" action="list" name="allFilter" object="{allFilter}">
<f:form.textfield id="fi-search" class="form-control" property="searchAll" />
<small class="form-text text-muted">Search what ever you want!</small>
</f:form>

Code (FilmControler.php)

/**
* action list
*
* @return void
*/
public function listAction()
{
$all = $this->request->getArguments();
$allFilter = $all[allFilter][searchAll];

if ($allFilter == '') {
$films = $this->filmRepository->findAll();
}
else {
$films = $this->filmRepository -> findByIndustry($allFilter);
}
$this->view->assign('films', $films);
}

Nun stehe ich vor einer Menge an Fragen:
Wie ihr in dem Code sehen könnt, beschränke ich mich mit findByIndustry($allFilter) nur auf einer der Datenbankspalten (Industry). Ich möchte aber, dass dieses All-Suchfeld auch seinem Namen gerecht wird, und mir die Eingabe mit sämtlichen Datenbankinhalten abgleicht.

Des Weiteren muss in der Suche aktuell immer der vollständige und exakte String eingegeben werden um ein Ergebnis zu bekommen.
Eingabe 'HVAC' -> Alle Filme mit der Branche HVAC
Eingabe 'HVA' -> Keine Ausgabe

Ich habe bereits mit Queries handtiert. Gefühlt geht es in die richtige Richtung...
Jedoch bekomme ich hier ein - Oops, an error occurred! - Fehler

Code in FilmRepository.php
/**
* My Query Function
*
* @param string $allFilter
*
*/
public function findAnyLikeMyProperty($allFilter) {
$query = $this->createQuery();
$query->matching($query->contains('industry', $industry));
return $query->execute();
}

Code in FilmController.php
public function listAction()
{
$all = $this->request->getArguments();
$allFilter = $all[allFilter][searchAll];

if ($allFilter == '') {
$films = $this->filmRepository->findAll();
}
else {
$films = $this->filmRepository->findAnyLikeMyProperty($allFilter);
}
$this->view->assign('films', $films);
}

Vielen Dank schoneinmal für eure Mühe!
Ich kann anbieten die 3 Dateien euch zur Verfügung zu stellen.

Grüße,
Luca