[TYPO3-german] Prüfung auf Zugehörigkeit zum eingeloggten fe_user in einer extbase/fluid extension

Dr. Dieter Porth typo3 at mobger.de
Sat Jul 30 17:18:10 CEST 2016


Hallo Ralf-Rene,

Ich möchte einmal versuchen, dein Problem mit meinen Worten zu beschreiben.

Du möchtest einem eingeloggten Berater eine Liste aller Teilnehmer 
ausgeben. Dabei sollen alle Teilnehmer, die der eingeloggte Berater 
betreut, verlinkt sein und die anderen nicht.

Die Beziehung zwischen Beratern und Teilnehmern wird in TYPO3 über eine 
mm-Tabelle organisiert.

Deine Idee:

Wenn du dies auf Front-End-Ebene lösen willst, dann müsstest du 
eigentlich mit zwei For-Schleifen arbeiten. Die erste Forschleife listet 
nacheinander alle Teilnehmer auf. Die zweiter Forschleife fragt für 
jeden Teilnehmer jeweils diese Berater ab und prüft, ob der eingeloggte 
Berater darunter ist. Dabei müsste dein Fluid-For ein Flag setzen, 
welches du dann auswertetest, um entweder den Link herzustellen oder um 
ihn nicht herzustellen.
P.S. Ein {teilnehmer.berater} oder {teilnehmer.berater.uid}(späterer 
Post von dir) kann nicht funktionieren, da potentiell mehr Berater 
vorliegen können und die Angaben immer in einem Array/QueryObject 
gekapselt sind. Wenn, dann müsstest du wahrscheinlich 
{teilnehmer.berater.0.uid} nutzen.

Nachteil
- sequentielle Logik
- Verstoß gegen MVC-Prinzip, da Datenlogik berechnen musst und nicht aus 
den Daten ablesen kannst
- Viele Datenbankabfragen, da für jeden Teilnehmer eine eigene 
Datenbankabfrage nötig ist


Vorschlag:

Generiere im schon im Controller eine Liste mit Teilnehmern, die von 
Frontend-User betreut werden und ordne beim Umschreiben in einen eigenen 
Array allen Einträgen das Flag 'needLink=true' zu.
Generiere im Controller eine zweite Liste mit Teilnehmern, die von 
Frontend-User NICHT betreut werden und ordne beim Umschreiben in einen 
eigenen Array allen Einträgen das Flag 'needLink=false' zu.
Merge den Array zu einem Gesamtarray  und sortiere diesen, indem du die 
array-keys beim umschreiben geschickt gewählt hast.

Vorteil
- zwei Datenbankabfragen
- einfache Ausgabelogik mit einer Forschleife


Mit besten Grüßen

     Dieter


Am 30.07.2016 um 12:58 schrieb Ralf-Rene Schröder:

> Hallo zusammen...
>
> Ich scheitere gerade an einer vermutlich simplen if prüfung.
> ich habe Berater (fe_user) und Teilnehmer
> ein Teilnehmer ist einem oder mehreren Beratern zugewiesen
> über {teilnehmer.berater} und mm-tabelle
>
> ich möchte nun nur die Teilnehmer innerhalb einer for each schleife
> ausgeben, aber nur die eigenen verlinken:
> Anstelle des ==1 (das ist ein existierender Berater) brauche ich dann
> später die UID des eingeloggten fe_users, aber noch nichtmal diese feste
> Zuweisung der gerade eingeloggten UserUid liefert immer nur das else
> Ergebnis...
>
> <f:for each="{teilnehmers}" as="teilnehmer">
> <f:if condition="{teilnehmer.berater} == 1">
>    <f:then>
>      <f:link.action action="show" arguments="{teilnehmer : teilnehmer}">
> {teilnehmer.name} </f:link.action>
>    </f:then>
>    <f:else>
>      {teilnehmer.name}
>    </f:else>
> </f:if>
> </f:for>
>
> PS: innerhalb der Einzelanzeige eines Teilnehmers kann ich übrigens die
> zugeordneten Berater problemlos anzeigen mit:
> <f:for each="{teilnehmer.berater}" as="tberater">
>    <li>{tberater.firstName} {tberater.lastName}</li>
> </f:for>
> nur die Prüfung vorher klappt irgendwie nicht...
>
>



More information about the TYPO3-german mailing list