Zum Inhalt springen

Suggest Wizard im TYPO3 BE

Erstellt am 14. Mai 2012 · 6 Antworten · letzte Antwort am 26. Oktober 2012

Tags: TCA, Frage

phafner ·

Hallo zusammen,

ich benutze in meiner Extension an mehreren Punkten den Suggest Wizard (Autocompletion) für ausgewählte Datensätze.

Das funktioniert auch sehr gut, allerdings kann man damit nur vom Anfang an suchen.

Beispiel
Datensatz: Kaffeetasse Blau
Suche nach: "Ka" -> Datensatz wird gefunden.

Ich möchte nun auch nach "Bl" für Blau suchen.

Das klappt nicht. Kann ich das im TCA / TS ändern, oder muss ich eine Custom Function dafür schreiben?

Vielen Dank im Voraus.

FabianX ·

Ich hatte es im TCA Reference auch nicht gefunden.
https://docs.typo3.org/m/typo3/reference-tca/main/en-us/Index.html

'suggest' => array(
'type' => 'suggest',
'maxItemsInResultList' => 25,
'default' => array(
'searchWholePhrase' => 1
),

),

Der Code muss im TCA unter wizards eingefügt werden.

Jetzt hab ich aber das Problem das er alle Sprachen durchsucht und nicht nur die des aktuellen Datensatz.

Hatte die Liste zuvor mit folgendem Code auf die derzeitige Sprache eingeschränkt:
'foreign_table_where' => 'AND (tx_beispiel.sys_language_uid =
###REC_FIELD_sys_language_uid### OR tx_beispiel.sys_language_uid = -1)',

Leider findet der Suggest Wizard dann gar keine Datensätze mehr.

Hat jemand eine Idee ?

FabianX ·

Bin die Core Dokumentation nochmal durchgegangen.

Über TS kann man über searchCondition weitere where Abfragen setzten.
So kann ich mir zum Beispiel nur die Datensätze einer bestimmten Sprache anzeigen lassen.

TCEFORM.suggest.default.searchCondition = sys_language_uid = 0

Aber wie kann man hier die gleiche Abfrage wie oben einbauen, sodass nur die Sprache des aktuell ausgewählten Datensatz angezeigt wird ?
Ich hab es so versucht und in vielen anderen schreibweisen aber ich vermute eine "OR" Verknüpfung ist hier nicht möglich.
Oder kann nicht auf ###REC_FIELD_sys_language_uid### zugegriffen werden ?

TCEFORM.suggest.default {
searchWholePhrase = 1
searchCondition = sys_language_uid = ###REC_FIELD_sys_language_uid### OR sys_language_uid = -1
}

FabianX ·

Leider stehe ich immer noch vor dem Problem.

Es muss doch irgendwie möglich sein auch mit dem suggest wizard nur Datensätze zu durchsuchen, welche der Sprache es aktuell gewählten Datensatzes entsprechen.

über 'foreign_table_where' => 'AND (tx_.sys_language_uid = 0 OR tx_.sys_language_uid = -1)',
kann man die suche auf eine Sprache beschränken und der wizard funktioniert auch.

Alternativ kann man auch über
'suggest' => array(
'type' => 'suggest',
'default' => array(
'searchWholePhrase' => 1,
'searchCondition' => 'sys_language_uid=0'
)
),
die gewünschte Sprache einstellen.

Aber es geht einfach nicht mit sys_language_uid = ###REC_FIELD_sys_language_uid### , wie kann ich also die language_uid abhängig von der Sprache des gewählten Datensatz einstellen ?

Der suggest wizard ist bei einer mehrsprachigen Extension die viele Datensätze verwalten soll somit im Prinzip nutzlos, da muss es doch eine Lösung geben 🙁

Bin am verzweifeln und für jede Hilfe dankbar.