Hallo, lieber Christian,
Danke für deine Mithilfe!!!
Mit folgendem TypoScript klappt's:
lib.MENU_COUNTRIES = CONTENT
lib.MENU_COUNTRIES {
table = tx_kofomi_domain_model_persons
select {
pidInList = 45
selectFields = tx_kofomi_domain_model_persons.nationality,
static_countries.uid, static_countries.cn_iso_2,
static_countries.cn_short_de
leftjoin = static_countries ON
(tx_kofomi_domain_model_persons.nationality = static_countries.uid)
where = tx_kofomi_domain_model_persons.nationality != 0
groupBy = tx_kofomi_domain_model_persons.nationality
orderBy = static_countries.cn_short_de
}
renderObj = COA
renderObj {
10 = TEXT
10.dataWrap = <li><a href="#filter-nationality-{field:cn_iso_2}"
data-filter-value=".{field:cn_iso_2}"
title="{field:cn_short_de}">{field:cn_short_de}
<small>({field:cn_iso_2})</small></a></li>
}
}
Die pidInList war ein wichtiger Hinweis von dir, denn die muss für die
Personen-Tabelle stimmen, nicht für die static_countries!
Meinerseits hab ich Blödsinn verzapft, als ich von m:m-Relation
gesprochen habe. Die gibt es nicht, es ist nur ein Mehrfach-Auswahlfeld.
Sorry!
Was bei mir Fehler macht, sind "AS"-Zuweisungen in sql-Statement,
deswegen ist alles ausgeschrieben. Mir ist das Problem bewusst, vor
allem im Zusammenhang mit dem "sorting"-Feld, wo dann schnell man ein
Fehler geworfen wird. Aber das Ansprechen von Feldern mit
Tabellen-"Vorsilbe" innerhalb des renderObj funktioniert bei mir nicht -
sollte das deiner Meinung nach gehen?
Also zB:
{field:stytic_countries.cn_short_de}
vs
{field:cn_short_de}
im renderObj-Abschnitt.
Öder könnte das ein bug sein???
Und zu letzt zu Extbase:
Wenn das mit dem m:m jetzt wegfällt und nur einfach auf die static-info
zugegriffen werden soll, ist die dann ein Weg bekannt?
Danke nochmals!
Gruß, Robert
Am 10.08.13 17:12, schrieb Robert Wildling:
Hallo Robert,
> Folgende Situation (Extbase 6.1, TYPO3 CMS 6.1.3, php 5.4.10):
Eine Tabelle "tx_kofomi_domain_model_persons" hat beim Feld
"nationality" eine m:m-Relation zu static_info_tables. (Die Person kann
mehrere Nationalitäten besitzen.) Am Kopf der Seite soll ein Menü gebaut
werden, dass die Länder, die in Verwendung sind, als Dropdown-Liste
anzeigt (bei Auswahl eines Landes greift dann ein Isotopes-Script und
filtert die Anzeigt.)
Ich will das mit TypoScript lösen, aber sobald ich ein leftjoin einbaue,
funktioniert das nicht mehr. Das ist das Script:
lib.MENU_COUNTRIES=CONTENT
lib.MENU_COUNTRIES{
table=tx_kofomi_domain_model_persons
select{
selectFields=tx_kofomi_domain_model_persons.nationality,static_countries.cn_short_de
leftjoin=static_countriesON(tx_kofomi_domain_model_persons.nationality=static_countries.uid)
#where = static_countries.deleted=0 AND static_countries.hidden=0 AND
tx_kofomi_domain_model_persons.deleted = 0 AND
tx_kofomi_domain_model_persons.hidden=0
groupBy=tx_kofomi_domain_model_persons.nationality
pidInList = 0
#orderBy = cn_short_de
}
renderObj=COA
renderObj{
10=TEXT
10.dataWrap=<li>{field:static_countries.cn_short_de}</li>
}
}
[schnipp]
Kann mir jemand erklären, warum das mit TS nicht geht? Ich weiß, dass
TS-select-Abfragen nicht funktionieren, wenn kein pidInList angegeben
wird, weswegen im angegebenen Abschnitt ein pidInlist angegeben wird...
Auch stellt sich mir die Frage, wie im renderObj ein Feld angesprochen
wird, wenn man mit m:m-Tabellen arbeitet - mit dem Tabellennamen vorm
Feld? Dazu finde ich absolut gar keine Dokumentation und auch keine
Beispiele. (Das renderObj zu Debug-Zwecken einfach nur mit einem
value=Test zu ersetzen, erzeigt übrigens auch keine Ausgabe...)
Das bei Verwendung von value=Test nichts ausgegeben wird, sagt uns
schon mal, daß die Abfrage kein Ergebnis liefert. Mit pidInList = 0
bekommst du natürlich nur Datensätze zurück, wenn auch die Einträge
für tx_kofomi_domain_model_persons auf der Seite mit der ID 0 liegen.
Insgesamt wundere ich mich etwas über die verwendeten Tabellen. In
tx_kofomi_domain_model_persons stehen die Personen und in
static_countries die Länder. Dann fehlt hier für eine n:m-Situation
aber die Verknüpfungstabelle, oder steh ich gerade auf dem Schlauch?
Die Felder sprichst du normal über ihre Namen an. Problematisch wird
das, wenn Feldnamen doppelt vorkommen, weil dann nur das Feld einer
der Tabellen zugänglich ist. In solchen Fällen sollte die Verwendung
von AS im Parameter selectFields helfen. Im vorliegenden Fall sollte
aber folgendes gehen:
10.dataWrap = <li>{field:cn_short_de}</li>
Und schließlich: Kann man dieses Problem auch mit Extbase selbst lösen?
Sprich: ist es möglich, im Controller "Person" in der listAction eine
Funktion einzubauen, die dieses Ländermenü bastelt? Meine Versuche, im
Repository bzw. im Controller eine Funktion zu bauen, die auf eine
Tabelle und deren Inhalt außerhalb des eigenen Objekts zuzugreifen
versucht, sind bislang gescheitert. Und TYPO3 v4
$GLOBALS[''].exec_SELECTquery ... möchte ich (noch) nicht verwenden,
weil es darum geht, Extbase und TYPO3 6.1 zu lernen.
Bei Extbase und n:m schnalle ich derzeit auch noch ab. :-(
Gruß
Christian
_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german