<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=87.165.0.123</id>
	<title>Wikizone - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=87.165.0.123"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/87.165.0.123"/>
	<updated>2026-05-06T17:03:56Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Narda&amp;diff=21280</id>
		<title>Narda</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Narda&amp;diff=21280"/>
		<updated>2015-10-23T18:45:36Z</updated>

		<summary type="html">&lt;p&gt;87.165.0.123: /* Änderungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Überblick ==&lt;br /&gt;
RMA und ACC liegen auf Geo-bit Server und sind per iFrame eingebunden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;940&amp;quot; height=&amp;quot;1000&amp;quot; src=&amp;quot;/1/RMA/rma_select_01.php?req_art=rep_cal&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;940&amp;quot; height=&amp;quot;1000&amp;quot; src=&amp;quot;/1/RMA/rma_select_01.php?req_art=warranty&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;940&amp;quot; height=&amp;quot;1000&amp;quot; src=&amp;quot;/1/acc-2/login.php&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
direkt erreichbar über:&lt;br /&gt;
&lt;br /&gt;
 http://narda-sts.com.w00eb738.kasserver.com/1/RMA/rma_select_01.php?req_art=rep_cal&lt;br /&gt;
 http://narda-sts.com.w00eb738.kasserver.com/1/RMA/rma_select_01.php?req_art=warranty&lt;br /&gt;
 http://narda-sts.com.w00eb738.kasserver.com/1/acc-2/login.php&lt;br /&gt;
&lt;br /&gt;
== TYPO3 RMA Extension ==&lt;br /&gt;
=== Dokumentation ===&lt;br /&gt;
Narda RMA Prozess [[Dokumentation gbrma]]&lt;br /&gt;
&lt;br /&gt;
=== Zus. Leistungen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mail an Admin 6h / Mailtemplates&lt;br /&gt;
pdf Generierung &lt;br /&gt;
Vorfilterung nach Geräteklasse + Auswahlkontrolle&lt;br /&gt;
Admin Ansicht benötigt ???&lt;br /&gt;
Zusätzliche States&lt;br /&gt;
Geräteliste zum Aufklappen ab 5 Zeilen&lt;br /&gt;
Templatevarianten für&lt;br /&gt;
SRM / IDA&lt;br /&gt;
NBM&lt;br /&gt;
Detailansicht für beendete RMA&lt;br /&gt;
Express Calibration&lt;br /&gt;
fpdf Integration für acc&lt;br /&gt;
Bespr. Narda 2h&lt;br /&gt;
Setting up Testing Area&lt;br /&gt;
Klassen müssen ebenfalls einer Familie zugeordnet werden&lt;br /&gt;
Checkboxen (calib, mod/upgr., repair, no service, nur dann anzeigen, wenn sinnvoll&lt;br /&gt;
Checkboxen komplett weg für ACC&lt;br /&gt;
Regel für mehrere Basedevices erlaubt (Radman)&lt;br /&gt;
Clientnr. in fe_user&lt;br /&gt;
Zeige Rmas by Client nr.&lt;br /&gt;
Modification ausblenden wenn keine vorhanden&lt;br /&gt;
Auslagerung von Texten in Lokalisierungstextfiles&lt;br /&gt;
Möglichkeit zur Auswahl von Texten je nach Geräteklasse&lt;br /&gt;
Erklärungstexte für Status&lt;br /&gt;
ACC Filterung auf Geräteklassenebene&lt;br /&gt;
Mail an Admin bei Delete&lt;br /&gt;
Mapping des ERP Exports und checken der RMAs&lt;br /&gt;
Test Scheduler einrichten&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Änderungen ===&lt;br /&gt;
* Client ID Mode -&amp;gt; Speichern der Client ID implementieren - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Client ID Mode -&amp;gt; Wenn angeschaltet Listing an ClientID statt an User ID ausrichten - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Client ID Mode -&amp;gt; Wenn angeschaltet UserValid Test an ClientID statt User ID ausrichten - &amp;#039;&amp;#039;&amp;#039; OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Fehler beim &amp;#039;&amp;#039;&amp;#039;Import&amp;#039;&amp;#039;&amp;#039; wenn Leerzeilen enthalten - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Feature: Statt RMA Date immer &amp;#039;&amp;#039;&amp;#039;Datum der letzten Status Aktualisierung&amp;#039;&amp;#039;&amp;#039;. 1. Angelegt in T3 2. Datum der letzten Bearbeitung aus ERP Datei - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Model erweitern (tstamp) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Templates auf tstamp statt cdate - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Anpassen im Code - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: &amp;#039;&amp;#039;&amp;#039;Datatables&amp;#039;&amp;#039;&amp;#039; Skript für Listenansicht - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Validierungen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Keine Beschreibung bei Repair eingegeben - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Kein Service Request gewählt - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Inspection Repair und No Service nicht gemeinsam anwählbar - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** F: Wenn Repair dann keine Kalibrierung (ist beinhaltet) -&amp;gt; Änderung Calib und Repair möglich - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** F: Wenn Kalibrierung dann kein Repair -&amp;gt; ist doch möglich - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: Am Ende Auswahlfeld Expresskalibrierung aber nur wenn Kalibrierung ausgewählt ist &amp;#039;&amp;#039;&amp;#039;Todo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: + Textfeld (Additional information) -&amp;gt; &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039; wird immer angezeigt auch wenn keine Expresskalib. &amp;#039;&amp;#039;&amp;#039; Evtl. anpassen (nach Rücksprache)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Beispielbilder&amp;#039;&amp;#039;&amp;#039; &amp;quot;Wo finde ich die Seriennummer&amp;quot; in Add Metadevice - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Bug: Add Main Device, Add 2.Device, Zurück auf Main Device Tab =&amp;gt; &amp;#039;&amp;#039;&amp;#039;Tabs&amp;#039;&amp;#039;&amp;#039; werden nicht mehr richtig dargestellt - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Nichtssagende &amp;#039;&amp;#039;&amp;#039;Fehlermeldung&amp;#039;&amp;#039;&amp;#039; in AddMetadevice wenn die Validierung scheitert (Seite wird erneut angezeigt) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Feature: NewFormFields soll Auswahl für Acc nur anbieten wenn Userrecht vorliegt (Safety) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMA Doku&amp;#039;&amp;#039;&amp;#039; -&amp;gt; z.T. aus E-Mails übernehmen - &amp;#039;&amp;#039;&amp;#039;TODO&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Fehlermeldungen von Extbase&amp;#039;&amp;#039;&amp;#039; verhindern bei Browserbedienung (vor und zurück Buttons) - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Wenn &amp;#039;&amp;#039;&amp;#039;RMA nicht vorhanden&amp;#039;&amp;#039;&amp;#039; (z.B. gelöscht) dann aussagekräftige Fehlermeldung) &amp;#039;&amp;#039;&amp;#039; ToDo &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Feature: &amp;#039;&amp;#039;&amp;#039;RMA gelöscht Mail&amp;#039;&amp;#039;&amp;#039; nur dann wenn Status 2 erreicht (also wenn schon eine Info bei Narda ankam) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMA Nummern&amp;#039;&amp;#039;&amp;#039; werden nur als gelöscht markiert bzw. eine Nummer wird nie mehrfach vergeben. - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ACC&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;PDF&amp;#039;&amp;#039;&amp;#039; muß auch an Kunden (FE-User) gesendet werden - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMA löschen Bestätigung&amp;#039;&amp;#039;&amp;#039; (JS) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* SRM Auswahl der Geräte -&amp;gt; richtige Tabs aktiv -&amp;gt; bei SRM 3 Tabs &amp;quot;rf-cable&amp;quot; - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* E-Mail RMA Type weg, RMA Prominent oben, evtl. im Betreff - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Zuerst Device Title dann SN - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Umbenennungen&lt;br /&gt;
** Express Order -&amp;gt; Express Calibration Service - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Factory Calibration / Repair -&amp;gt; ohne Warranty Request - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Modification Texte 5 und 6 - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: ClientID Mode -&amp;gt; User mit der selben Client ID können RMAs anderer User sehen - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Client Id als Merkmal im User - &amp;#039;&amp;#039;&amp;#039; ToDo &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Client ID muß beim abspreichern vorliegen und mit abgespeichert werden.&lt;br /&gt;
&lt;br /&gt;
== Internet Präsenz Narda ==&lt;br /&gt;
&lt;br /&gt;
Mischung aus verschiedenen Systemen&lt;br /&gt;
&lt;br /&gt;
Hauptdomain: www.narda-sts.de&lt;br /&gt;
&lt;br /&gt;
=== Content Management System ===&lt;br /&gt;
Frontend ist TYPO3 allerdings werden einige Download-Listen über ein php-Skript generiert.&lt;br /&gt;
Diese Inhalte werden über ein eigenes Tool realisiert.&lt;br /&gt;
&lt;br /&gt;
=== FTP-Zugänge ===&lt;br /&gt;
&lt;br /&gt;
Die Seite würd über vodafone gehostet. Vodafone der Zugriff erfolgt Zentral über&lt;br /&gt;
ftp.vodafone-ip.de&lt;br /&gt;
&lt;br /&gt;
Im Admin Bereich von Vodafone kann man FTP Benutzer anlegen.&lt;br /&gt;
Der Zugriff erfolgt dann über [benutzername]%[domainname]&lt;br /&gt;
Also z.B. aszwei%narda-sts.de&lt;br /&gt;
&lt;br /&gt;
=== Server Verwaltung ===&lt;br /&gt;
Hier kann man FTP Zugänge anlegen, auf phpMyAdmin zugreifen etc.&lt;br /&gt;
Login unter: https://webadmin.arcor.net/Secure/&lt;br /&gt;
&lt;br /&gt;
=== phpMyAdmin ===&lt;br /&gt;
Direkt zu erreichen unter:&lt;br /&gt;
&lt;br /&gt;
== Eigenes Admin System ==&lt;br /&gt;
Zur Verwaltung von downloads, etc.&lt;br /&gt;
http://www.narda-sts.de/admin/&lt;br /&gt;
&lt;br /&gt;
Greift auf eine separate Datenbank zu, in der die Daten abgelegt sind.&lt;br /&gt;
&lt;br /&gt;
==== Anpassen eines Software Downloads ====&lt;br /&gt;
Um einen Download anzupassen spielt man die Datei per FTP unterhalb des Verzeichnisses&lt;br /&gt;
/download/software/&lt;br /&gt;
&lt;br /&gt;
Als nächstes öffnet man das Admin Tool und geht in den Menüpunkt&lt;br /&gt;
SoftwareUpdate (beta)&lt;br /&gt;
Dort kann man die Release Nummer anpassen (z.B. 2011) und aus dem Dropdownfeld die passende Datei auswählen.&lt;br /&gt;
&lt;br /&gt;
==== Anlegen eines neuen Downloads ====&lt;br /&gt;
Hierbei muß man beachten daß in TYPO3 ein php Schnipsel eingebunden wird.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  include(&amp;quot;fileadmin/user_upload/scripts/db_func.inc&amp;quot;);&lt;br /&gt;
  print (get_software_information(&amp;quot;EFC_HF_Demo_EN&amp;quot;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gibt einen Download Block inkl. Link und Beschreibung aus.&lt;br /&gt;
Wobei als Parameter der Name im Datenbankfeld re_call übergeben wird. Dieser wird beim Anlegen der Software manuell Vergeben&lt;br /&gt;
&lt;br /&gt;
== Sales Partner Extranet ==&lt;br /&gt;
www.narda-sts.de/sp (oder /vp)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RMA Garantie und Rücklaufgeräte ==&lt;br /&gt;
Dies wird über Vertragspartner erledigt, und es gibt ein weiteres Tool. Der User holt sich ein RMA Ticket (Online Formular) Je nach Region wird dann an den Vertriebspartner eine E-Mail versendet. Außerdem an Narda. &lt;br /&gt;
&lt;br /&gt;
Auf dem Serverl liegt es im Ordner /1/RMA/&lt;br /&gt;
&lt;br /&gt;
Im Quelltext sind auch etliche E-Mail Adressen hinterlegt die auf Mails zu Aichele und dem Programmierer hinweisen. Das müßte mal ausgemistet werden.&lt;br /&gt;
&lt;br /&gt;
=== Kontaktdaten der Vertriebspartner ===&lt;br /&gt;
Diese sind in der Datenbank in der Tabelle &amp;#039;&amp;#039;&amp;#039; rma_requests&amp;#039;&amp;#039;&amp;#039; hinterlegt.&lt;br /&gt;
Es gibt auch eine Tabelle Vertriebspartner. Ist aber nicht ganz klar wann diese benutzt werden.&lt;br /&gt;
Ich habe noch kein Administrationstool gefunden. Die Änderung kann aber direkt in der Datenbank erfolgen.&lt;br /&gt;
 &lt;br /&gt;
Edit:&lt;br /&gt;
&lt;br /&gt;
Vertriebspartner in der Tabelle vertriebspartner werden vom RMA Prozess Tool (und vom neuen acc Tool) genutzt.&lt;br /&gt;
&lt;br /&gt;
Es gibt außerdem eine Ausgabe der Vertriebspartner Adressen. Dabei werden über das Admin Tool (Narda Tool -&amp;gt; Partner Update) html Dateien geschrieben, die dann im Typo eingebunden sind. (Total umständlich). Es wird die Tabelle ??? genutzt.&lt;br /&gt;
&lt;br /&gt;
=== Funktionsweise technische Realisierung (PHP-Skripte) ===&lt;br /&gt;
Siehe MindMap&lt;br /&gt;
&lt;br /&gt;
Einstieg für den RMA Prozess ist der Link:&lt;br /&gt;
&lt;br /&gt;
 http://www.narda-sts.de/1/RMA/rma_select_01.php?req_art=rep_cal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In diesem Schritt wird die Länderauswahl angezeigt und die Art der Anfrege übergeben.&lt;br /&gt;
Nach der Länderauswahl sieht der link dann ungefähr so aus:&lt;br /&gt;
&lt;br /&gt;
https://ssl.arcor-secure.de/narda-sts.de/1/RMA/rma_persData_02.php?req_art=rep_cal&amp;amp;req_id=P20110214_gF164223&amp;amp;req_reg=2&lt;br /&gt;
&lt;br /&gt;
Es wird also eine req_id und req_reg Übergeben. Und die Persönlichen Daten abgefragt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RMA/rma_reCall.php&lt;br /&gt;
&lt;br /&gt;
== ACC Prozess ==&lt;br /&gt;
Für den ACC (Accredited Callbration) wurde das Tool komplett überarbeitet und entschlackt. Im Moment läuft es nicht auf dem Narda Server, sondern auf dem Geo-bit Server.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise zur Datenbank ===&lt;br /&gt;
Die Partner sind hier in der Tabelle Vertriebspartner hinterlegt. Sie Loggen sich mit ihrer ID und einem Passwort ein. Die Tabelle wurde ursprünglich kopiert und um einige Felder erweitert. &lt;br /&gt;
&lt;br /&gt;
Es können sich nur Partner anmelden die im Feld&lt;br /&gt;
&lt;br /&gt;
== Weitere Skripte ==&lt;br /&gt;
&lt;br /&gt;
Es sind einige weitere Skripte im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Funktionsübersicht von Produkten ===&lt;br /&gt;
/doc/fileadmin/user_upload/scripts/func_overview.inc.php&lt;br /&gt;
&lt;br /&gt;
Wird in Typo3 so aufgerufen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
 include(&amp;quot;fileadmin/user_upload/scripts/func_overview.inc.php&amp;quot;);&lt;br /&gt;
  $config_file = &amp;quot;typo3conf/localconf.php&amp;quot;;&lt;br /&gt;
  $image_path = &amp;quot;fileadmin/user_upload/products/personal_protection&amp;quot;;&lt;br /&gt;
  $page_id = 70; // ID DER UEBERGEORDNETEN SEITE&lt;br /&gt;
  print get_overview($page_id,$image_path,&amp;quot;Personal Monitor&amp;quot;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktion:&lt;br /&gt;
&lt;br /&gt;
* Liest die aktuelle Sprache aus dem L Parameter oder der RealURL Adresse&lt;br /&gt;
* Liest die pid der untergeordneten Seiten aus.&lt;br /&gt;
&lt;br /&gt;
=== Mailfunktion RMA / ACC ===&lt;br /&gt;
==== RMA ====&lt;br /&gt;
Es werden mehrere Mails generiert. &lt;br /&gt;
&lt;br /&gt;
1. Schritt User Registrierung =&amp;gt; Mail mit dem Ticket. Dieses enthält einen Link. Für die Geräteeingabe&lt;br /&gt;
Mailversand in &amp;#039;&amp;#039;&amp;#039;rma_persData_02.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
2. Schritt Versand der RMA Daten&lt;br /&gt;
 $html_mail_versand = send_html_mail($req_number,$req_ident_number,$req_art);&lt;br /&gt;
kommt aus &amp;#039;&amp;#039;&amp;#039;mail_html_function.inc.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==== ACC ====&lt;br /&gt;
Das Formular zur Eingabe liegt in &amp;#039;&amp;#039;&amp;#039;acc_form.ph&amp;#039;&amp;#039;&amp;#039;p Nach Absenden wird &amp;#039;&amp;#039;&amp;#039;acc_form_send.php&amp;#039;&amp;#039;&amp;#039; aufgerufen. In diesem wird die Mail über die Funktion &lt;br /&gt;
 $success = send_acc_mail($rma_num,$arrForm,$arrPartner); &lt;br /&gt;
versendet. Die Funktion wird in &amp;#039;&amp;#039;&amp;#039;lib/acal_functions.php&amp;#039;&amp;#039;&amp;#039; zur Verfügung gestellt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FORMULAR        MAILVERSAND / FEEDBACK&lt;br /&gt;
acc_form.php -&amp;gt; acc_form_send.php        &amp;lt;- includes acal_functions.php (send_acc_mail)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>87.165.0.123</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Narda&amp;diff=21279</id>
		<title>Narda</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Narda&amp;diff=21279"/>
		<updated>2015-10-23T18:37:49Z</updated>

		<summary type="html">&lt;p&gt;87.165.0.123: /* Änderungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Überblick ==&lt;br /&gt;
RMA und ACC liegen auf Geo-bit Server und sind per iFrame eingebunden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;940&amp;quot; height=&amp;quot;1000&amp;quot; src=&amp;quot;/1/RMA/rma_select_01.php?req_art=rep_cal&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;940&amp;quot; height=&amp;quot;1000&amp;quot; src=&amp;quot;/1/RMA/rma_select_01.php?req_art=warranty&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;940&amp;quot; height=&amp;quot;1000&amp;quot; src=&amp;quot;/1/acc-2/login.php&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
direkt erreichbar über:&lt;br /&gt;
&lt;br /&gt;
 http://narda-sts.com.w00eb738.kasserver.com/1/RMA/rma_select_01.php?req_art=rep_cal&lt;br /&gt;
 http://narda-sts.com.w00eb738.kasserver.com/1/RMA/rma_select_01.php?req_art=warranty&lt;br /&gt;
 http://narda-sts.com.w00eb738.kasserver.com/1/acc-2/login.php&lt;br /&gt;
&lt;br /&gt;
== TYPO3 RMA Extension ==&lt;br /&gt;
=== Dokumentation ===&lt;br /&gt;
Narda RMA Prozess [[Dokumentation gbrma]]&lt;br /&gt;
&lt;br /&gt;
=== Zus. Leistungen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mail an Admin 6h / Mailtemplates&lt;br /&gt;
pdf Generierung &lt;br /&gt;
Vorfilterung nach Geräteklasse + Auswahlkontrolle&lt;br /&gt;
Admin Ansicht benötigt ???&lt;br /&gt;
Zusätzliche States&lt;br /&gt;
Geräteliste zum Aufklappen ab 5 Zeilen&lt;br /&gt;
Templatevarianten für&lt;br /&gt;
SRM / IDA&lt;br /&gt;
NBM&lt;br /&gt;
Detailansicht für beendete RMA&lt;br /&gt;
Express Calibration&lt;br /&gt;
fpdf Integration für acc&lt;br /&gt;
Bespr. Narda 2h&lt;br /&gt;
Setting up Testing Area&lt;br /&gt;
Klassen müssen ebenfalls einer Familie zugeordnet werden&lt;br /&gt;
Checkboxen (calib, mod/upgr., repair, no service, nur dann anzeigen, wenn sinnvoll&lt;br /&gt;
Checkboxen komplett weg für ACC&lt;br /&gt;
Regel für mehrere Basedevices erlaubt (Radman)&lt;br /&gt;
Clientnr. in fe_user&lt;br /&gt;
Zeige Rmas by Client nr.&lt;br /&gt;
Modification ausblenden wenn keine vorhanden&lt;br /&gt;
Auslagerung von Texten in Lokalisierungstextfiles&lt;br /&gt;
Möglichkeit zur Auswahl von Texten je nach Geräteklasse&lt;br /&gt;
Erklärungstexte für Status&lt;br /&gt;
ACC Filterung auf Geräteklassenebene&lt;br /&gt;
Mail an Admin bei Delete&lt;br /&gt;
Mapping des ERP Exports und checken der RMAs&lt;br /&gt;
Test Scheduler einrichten&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Änderungen ===&lt;br /&gt;
* Client ID Mode -&amp;gt; Speichern der Client ID implementieren - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Client ID Mode -&amp;gt; Wenn angeschaltet Listing an ClientID statt an User ID ausrichten - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Client ID Mode -&amp;gt; Wenn angeschaltet UserValid Test an ClientID statt User ID ausrichten - &amp;#039;&amp;#039;&amp;#039; ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* Fehler beim &amp;#039;&amp;#039;&amp;#039;Import&amp;#039;&amp;#039;&amp;#039; wenn Leerzeilen enthalten - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Feature: Statt RMA Date immer &amp;#039;&amp;#039;&amp;#039;Datum der letzten Status Aktualisierung&amp;#039;&amp;#039;&amp;#039;. 1. Angelegt in T3 2. Datum der letzten Bearbeitung aus ERP Datei - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Model erweitern (tstamp) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Templates auf tstamp statt cdate - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Anpassen im Code - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: &amp;#039;&amp;#039;&amp;#039;Datatables&amp;#039;&amp;#039;&amp;#039; Skript für Listenansicht - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Validierungen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Keine Beschreibung bei Repair eingegeben - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Kein Service Request gewählt - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Inspection Repair und No Service nicht gemeinsam anwählbar - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** F: Wenn Repair dann keine Kalibrierung (ist beinhaltet) -&amp;gt; Änderung Calib und Repair möglich - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** F: Wenn Kalibrierung dann kein Repair -&amp;gt; ist doch möglich - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: Am Ende Auswahlfeld Expresskalibrierung aber nur wenn Kalibrierung ausgewählt ist &amp;#039;&amp;#039;&amp;#039;Todo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: + Textfeld (Additional information) -&amp;gt; &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039; wird immer angezeigt auch wenn keine Expresskalib. &amp;#039;&amp;#039;&amp;#039; Evtl. anpassen (nach Rücksprache)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Beispielbilder&amp;#039;&amp;#039;&amp;#039; &amp;quot;Wo finde ich die Seriennummer&amp;quot; in Add Metadevice - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Bug: Add Main Device, Add 2.Device, Zurück auf Main Device Tab =&amp;gt; &amp;#039;&amp;#039;&amp;#039;Tabs&amp;#039;&amp;#039;&amp;#039; werden nicht mehr richtig dargestellt - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Nichtssagende &amp;#039;&amp;#039;&amp;#039;Fehlermeldung&amp;#039;&amp;#039;&amp;#039; in AddMetadevice wenn die Validierung scheitert (Seite wird erneut angezeigt) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Feature: NewFormFields soll Auswahl für Acc nur anbieten wenn Userrecht vorliegt (Safety) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMA Doku&amp;#039;&amp;#039;&amp;#039; -&amp;gt; z.T. aus E-Mails übernehmen - &amp;#039;&amp;#039;&amp;#039;TODO&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Fehlermeldungen von Extbase&amp;#039;&amp;#039;&amp;#039; verhindern bei Browserbedienung (vor und zurück Buttons) - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Wenn &amp;#039;&amp;#039;&amp;#039;RMA nicht vorhanden&amp;#039;&amp;#039;&amp;#039; (z.B. gelöscht) dann aussagekräftige Fehlermeldung) &amp;#039;&amp;#039;&amp;#039; ToDo &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Feature: &amp;#039;&amp;#039;&amp;#039;RMA gelöscht Mail&amp;#039;&amp;#039;&amp;#039; nur dann wenn Status 2 erreicht (also wenn schon eine Info bei Narda ankam) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMA Nummern&amp;#039;&amp;#039;&amp;#039; werden nur als gelöscht markiert bzw. eine Nummer wird nie mehrfach vergeben. - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ACC&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;PDF&amp;#039;&amp;#039;&amp;#039; muß auch an Kunden (FE-User) gesendet werden - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMA löschen Bestätigung&amp;#039;&amp;#039;&amp;#039; (JS) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* SRM Auswahl der Geräte -&amp;gt; richtige Tabs aktiv -&amp;gt; bei SRM 3 Tabs &amp;quot;rf-cable&amp;quot; - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* E-Mail RMA Type weg, RMA Prominent oben, evtl. im Betreff - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Zuerst Device Title dann SN - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Umbenennungen&lt;br /&gt;
** Express Order -&amp;gt; Express Calibration Service - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Factory Calibration / Repair -&amp;gt; ohne Warranty Request - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Modification Texte 5 und 6 - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: ClientID Mode -&amp;gt; User mit der selben Client ID können RMAs anderer User sehen - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Client Id als Merkmal im User - &amp;#039;&amp;#039;&amp;#039; ToDo &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Client ID muß beim abspreichern vorliegen und mit abgespeichert werden.&lt;br /&gt;
&lt;br /&gt;
== Internet Präsenz Narda ==&lt;br /&gt;
&lt;br /&gt;
Mischung aus verschiedenen Systemen&lt;br /&gt;
&lt;br /&gt;
Hauptdomain: www.narda-sts.de&lt;br /&gt;
&lt;br /&gt;
=== Content Management System ===&lt;br /&gt;
Frontend ist TYPO3 allerdings werden einige Download-Listen über ein php-Skript generiert.&lt;br /&gt;
Diese Inhalte werden über ein eigenes Tool realisiert.&lt;br /&gt;
&lt;br /&gt;
=== FTP-Zugänge ===&lt;br /&gt;
&lt;br /&gt;
Die Seite würd über vodafone gehostet. Vodafone der Zugriff erfolgt Zentral über&lt;br /&gt;
ftp.vodafone-ip.de&lt;br /&gt;
&lt;br /&gt;
Im Admin Bereich von Vodafone kann man FTP Benutzer anlegen.&lt;br /&gt;
Der Zugriff erfolgt dann über [benutzername]%[domainname]&lt;br /&gt;
Also z.B. aszwei%narda-sts.de&lt;br /&gt;
&lt;br /&gt;
=== Server Verwaltung ===&lt;br /&gt;
Hier kann man FTP Zugänge anlegen, auf phpMyAdmin zugreifen etc.&lt;br /&gt;
Login unter: https://webadmin.arcor.net/Secure/&lt;br /&gt;
&lt;br /&gt;
=== phpMyAdmin ===&lt;br /&gt;
Direkt zu erreichen unter:&lt;br /&gt;
&lt;br /&gt;
== Eigenes Admin System ==&lt;br /&gt;
Zur Verwaltung von downloads, etc.&lt;br /&gt;
http://www.narda-sts.de/admin/&lt;br /&gt;
&lt;br /&gt;
Greift auf eine separate Datenbank zu, in der die Daten abgelegt sind.&lt;br /&gt;
&lt;br /&gt;
==== Anpassen eines Software Downloads ====&lt;br /&gt;
Um einen Download anzupassen spielt man die Datei per FTP unterhalb des Verzeichnisses&lt;br /&gt;
/download/software/&lt;br /&gt;
&lt;br /&gt;
Als nächstes öffnet man das Admin Tool und geht in den Menüpunkt&lt;br /&gt;
SoftwareUpdate (beta)&lt;br /&gt;
Dort kann man die Release Nummer anpassen (z.B. 2011) und aus dem Dropdownfeld die passende Datei auswählen.&lt;br /&gt;
&lt;br /&gt;
==== Anlegen eines neuen Downloads ====&lt;br /&gt;
Hierbei muß man beachten daß in TYPO3 ein php Schnipsel eingebunden wird.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  include(&amp;quot;fileadmin/user_upload/scripts/db_func.inc&amp;quot;);&lt;br /&gt;
  print (get_software_information(&amp;quot;EFC_HF_Demo_EN&amp;quot;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gibt einen Download Block inkl. Link und Beschreibung aus.&lt;br /&gt;
Wobei als Parameter der Name im Datenbankfeld re_call übergeben wird. Dieser wird beim Anlegen der Software manuell Vergeben&lt;br /&gt;
&lt;br /&gt;
== Sales Partner Extranet ==&lt;br /&gt;
www.narda-sts.de/sp (oder /vp)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RMA Garantie und Rücklaufgeräte ==&lt;br /&gt;
Dies wird über Vertragspartner erledigt, und es gibt ein weiteres Tool. Der User holt sich ein RMA Ticket (Online Formular) Je nach Region wird dann an den Vertriebspartner eine E-Mail versendet. Außerdem an Narda. &lt;br /&gt;
&lt;br /&gt;
Auf dem Serverl liegt es im Ordner /1/RMA/&lt;br /&gt;
&lt;br /&gt;
Im Quelltext sind auch etliche E-Mail Adressen hinterlegt die auf Mails zu Aichele und dem Programmierer hinweisen. Das müßte mal ausgemistet werden.&lt;br /&gt;
&lt;br /&gt;
=== Kontaktdaten der Vertriebspartner ===&lt;br /&gt;
Diese sind in der Datenbank in der Tabelle &amp;#039;&amp;#039;&amp;#039; rma_requests&amp;#039;&amp;#039;&amp;#039; hinterlegt.&lt;br /&gt;
Es gibt auch eine Tabelle Vertriebspartner. Ist aber nicht ganz klar wann diese benutzt werden.&lt;br /&gt;
Ich habe noch kein Administrationstool gefunden. Die Änderung kann aber direkt in der Datenbank erfolgen.&lt;br /&gt;
 &lt;br /&gt;
Edit:&lt;br /&gt;
&lt;br /&gt;
Vertriebspartner in der Tabelle vertriebspartner werden vom RMA Prozess Tool (und vom neuen acc Tool) genutzt.&lt;br /&gt;
&lt;br /&gt;
Es gibt außerdem eine Ausgabe der Vertriebspartner Adressen. Dabei werden über das Admin Tool (Narda Tool -&amp;gt; Partner Update) html Dateien geschrieben, die dann im Typo eingebunden sind. (Total umständlich). Es wird die Tabelle ??? genutzt.&lt;br /&gt;
&lt;br /&gt;
=== Funktionsweise technische Realisierung (PHP-Skripte) ===&lt;br /&gt;
Siehe MindMap&lt;br /&gt;
&lt;br /&gt;
Einstieg für den RMA Prozess ist der Link:&lt;br /&gt;
&lt;br /&gt;
 http://www.narda-sts.de/1/RMA/rma_select_01.php?req_art=rep_cal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In diesem Schritt wird die Länderauswahl angezeigt und die Art der Anfrege übergeben.&lt;br /&gt;
Nach der Länderauswahl sieht der link dann ungefähr so aus:&lt;br /&gt;
&lt;br /&gt;
https://ssl.arcor-secure.de/narda-sts.de/1/RMA/rma_persData_02.php?req_art=rep_cal&amp;amp;req_id=P20110214_gF164223&amp;amp;req_reg=2&lt;br /&gt;
&lt;br /&gt;
Es wird also eine req_id und req_reg Übergeben. Und die Persönlichen Daten abgefragt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RMA/rma_reCall.php&lt;br /&gt;
&lt;br /&gt;
== ACC Prozess ==&lt;br /&gt;
Für den ACC (Accredited Callbration) wurde das Tool komplett überarbeitet und entschlackt. Im Moment läuft es nicht auf dem Narda Server, sondern auf dem Geo-bit Server.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise zur Datenbank ===&lt;br /&gt;
Die Partner sind hier in der Tabelle Vertriebspartner hinterlegt. Sie Loggen sich mit ihrer ID und einem Passwort ein. Die Tabelle wurde ursprünglich kopiert und um einige Felder erweitert. &lt;br /&gt;
&lt;br /&gt;
Es können sich nur Partner anmelden die im Feld&lt;br /&gt;
&lt;br /&gt;
== Weitere Skripte ==&lt;br /&gt;
&lt;br /&gt;
Es sind einige weitere Skripte im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Funktionsübersicht von Produkten ===&lt;br /&gt;
/doc/fileadmin/user_upload/scripts/func_overview.inc.php&lt;br /&gt;
&lt;br /&gt;
Wird in Typo3 so aufgerufen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
 include(&amp;quot;fileadmin/user_upload/scripts/func_overview.inc.php&amp;quot;);&lt;br /&gt;
  $config_file = &amp;quot;typo3conf/localconf.php&amp;quot;;&lt;br /&gt;
  $image_path = &amp;quot;fileadmin/user_upload/products/personal_protection&amp;quot;;&lt;br /&gt;
  $page_id = 70; // ID DER UEBERGEORDNETEN SEITE&lt;br /&gt;
  print get_overview($page_id,$image_path,&amp;quot;Personal Monitor&amp;quot;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktion:&lt;br /&gt;
&lt;br /&gt;
* Liest die aktuelle Sprache aus dem L Parameter oder der RealURL Adresse&lt;br /&gt;
* Liest die pid der untergeordneten Seiten aus.&lt;br /&gt;
&lt;br /&gt;
=== Mailfunktion RMA / ACC ===&lt;br /&gt;
==== RMA ====&lt;br /&gt;
Es werden mehrere Mails generiert. &lt;br /&gt;
&lt;br /&gt;
1. Schritt User Registrierung =&amp;gt; Mail mit dem Ticket. Dieses enthält einen Link. Für die Geräteeingabe&lt;br /&gt;
Mailversand in &amp;#039;&amp;#039;&amp;#039;rma_persData_02.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
2. Schritt Versand der RMA Daten&lt;br /&gt;
 $html_mail_versand = send_html_mail($req_number,$req_ident_number,$req_art);&lt;br /&gt;
kommt aus &amp;#039;&amp;#039;&amp;#039;mail_html_function.inc.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==== ACC ====&lt;br /&gt;
Das Formular zur Eingabe liegt in &amp;#039;&amp;#039;&amp;#039;acc_form.ph&amp;#039;&amp;#039;&amp;#039;p Nach Absenden wird &amp;#039;&amp;#039;&amp;#039;acc_form_send.php&amp;#039;&amp;#039;&amp;#039; aufgerufen. In diesem wird die Mail über die Funktion &lt;br /&gt;
 $success = send_acc_mail($rma_num,$arrForm,$arrPartner); &lt;br /&gt;
versendet. Die Funktion wird in &amp;#039;&amp;#039;&amp;#039;lib/acal_functions.php&amp;#039;&amp;#039;&amp;#039; zur Verfügung gestellt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FORMULAR        MAILVERSAND / FEEDBACK&lt;br /&gt;
acc_form.php -&amp;gt; acc_form_send.php        &amp;lt;- includes acal_functions.php (send_acc_mail)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>87.165.0.123</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Extbase_-_Zugriff_auf_die_fe_user_Tabelle&amp;diff=21278</id>
		<title>Extbase - Zugriff auf die fe user Tabelle</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Extbase_-_Zugriff_auf_die_fe_user_Tabelle&amp;diff=21278"/>
		<updated>2015-10-23T18:28:12Z</updated>

		<summary type="html">&lt;p&gt;87.165.0.123: /* Model für weitere Felder der fe_users erweitern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://wiki.zone30.info/wikizone/index.php/Extbase_Extensions_-_Snippets_und_Glossar#Auf_Daten_andererer_Modelle_.2F_Repositorys_im_Controller_zugreifen._.28verkn.C3.BCpfte_Daten_auflisten.29&lt;br /&gt;
&lt;br /&gt;
http://www.derhansen.de/2012/06/zugriff-auf-frontend-user-tabelle-aus.html&lt;br /&gt;
&lt;br /&gt;
http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Wie kriege ich die Daten ===&lt;br /&gt;
Wir möchten die Daten der fe_users Tabelle, also die Frontenduser in unserer eigenen Extension verwenden. Extbase hat ein eigenes Domain Model und ein eigenes Repository vorbereitet um auf die Standard Felder der fe_users Tabelle zuzugreifen. Das bedeutet man kann die Daten einfach nutzen, wenn man sein eigenes Model erweitert. Ich brauche keine Getter und Setter Methoden etc. mehr. Zu definieren.&lt;br /&gt;
=== fe_users extended ===&lt;br /&gt;
Allerdings wird gerade die Tabelle fe_users oftmals von anderen Extensions um weitere Felder erweitert (z.B. sr_feuser_register). Diese Felder sind natürlich nicht im Model von extbase enthalten. Deshalb muß man sie nochmal separat behandeln. Man erweitert einfach sein eigenes Datenmodell um diese Felder. So funktioniert das ganze.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt möchten wir vielleicht auch noch die fe_users um eigene Felder erweitern.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
* Nicht verwechseln: &amp;#039;&amp;#039;$user=$GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user;&amp;#039;&amp;#039; gibt den aktuell angemeldeten User zurück. &lt;br /&gt;
* findAll() soll laut einem Forumseintrag nicht funktionieren. $user = $this-&amp;gt;userRepository-&amp;gt;findByUid($uid); schon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Zugriff auf fe_users Daten in eigener Extension  ==&lt;br /&gt;
Wenn man einfach nur ein paar Daten aus fe_users braucht, kann man das Standard Repository einfach injecten.&lt;br /&gt;
=== Übersicht ===&lt;br /&gt;
# fe_users-Repository per Dependency Injection zu Verfügung stellen&lt;br /&gt;
# Auslesen der Userdaten&lt;br /&gt;
# Mapping beachten&lt;br /&gt;
&lt;br /&gt;
=== fe_user Tabelle  Injecten ===&lt;br /&gt;
Im Controller deiner Extension&lt;br /&gt;
Ab 6.0&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
 * @inject&lt;br /&gt;
 */&lt;br /&gt;
protected $frontendUserRepository;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old School (&amp;lt;4.7)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var Tx_Extbase_Domain_Repository_FrontendUserRepository&lt;br /&gt;
 */&lt;br /&gt;
protected $userRepository;    &lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Inject the user repository&lt;br /&gt;
 *&lt;br /&gt;
 * @param Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function injectFrontendUserRepository(Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository) {&lt;br /&gt;
    $this-&amp;gt;userRepository = $userRepository;&lt;br /&gt;
}  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Userdaten holen ===&lt;br /&gt;
Z.B. im Controller:&lt;br /&gt;
 $user = $this-&amp;gt;userRepository-&amp;gt;findByUid($uid);&lt;br /&gt;
&lt;br /&gt;
=== Problem: User werden nicht ausgegeben weil record type nicht gesetzt ist ===&lt;br /&gt;
Hinweis: In neueren Versionen von Extbase ist das Mapping anders definiert -&amp;gt; nur bei alten Versionen wichtig (nicht verifiziert)&lt;br /&gt;
&lt;br /&gt;
Achtung: Extbase erweitert die fe_users und fe_groups um &amp;#039;&amp;#039;&amp;#039;das Feld tx_extbase_type (Record Type) Ist dies nicht vorhanden gibt es nichts zurück.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Im TypoScript definiert Extbase&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
 Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
  mapping.recordType = Tx_Extbase_Domain_Model_FrontendUser&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Im Mapping ist der recordType gesetzt d.h. es sucht nur fe_user mit dem recordType Tx_Extbase_Domain_Model_FrontendUser &lt;br /&gt;
&lt;br /&gt;
Lösung:&lt;br /&gt;
* Recordtype setzen&lt;br /&gt;
* oder Mapping löschen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
 Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
  mapping.recordType &amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* zusätzlich evtl. Recordtype automatisch vorbelegen -&amp;gt; im PageTS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TCAdefaults.fe_users.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUser&lt;br /&gt;
TCAdefaults.fe_groups.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUserGroup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: FE User in eigener Extension speichern ==&lt;br /&gt;
Am Beispiel der Extension gbrma. Der aktuell angemeldete User soll im Feld rma_user gespeichert werden. Dieses gehört zum Model &amp;#039;Rma&amp;#039;&lt;br /&gt;
=== Vorgehen ===&lt;br /&gt;
* Feld in ext_tables.sql anlegen -&amp;gt; Datenbank&lt;br /&gt;
* Feld in TCA anlegen -&amp;gt; Backend&lt;br /&gt;
* Feld in Model anlegen und Controller bearbeiten:&lt;br /&gt;
** mit Getter und Setter ergänzen-&amp;gt; Extbase Handling &lt;br /&gt;
** aktuell angemeldeter User abfragen&lt;br /&gt;
** User speichern (in create Action)&lt;br /&gt;
* Templates anpassen (wird hier nicht gezeigt)&lt;br /&gt;
=== ext_tables.sql ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
rma_user int(11) unsigned DEFAULT &amp;#039;0&amp;#039; NOT NULL,&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TCA ===&lt;br /&gt;
Configuration/TCA/Rma.php&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
		&amp;#039;rma_user&amp;#039; =&amp;gt; array(&lt;br /&gt;
			&amp;#039;exclude&amp;#039; =&amp;gt; 1,&lt;br /&gt;
			&amp;#039;label&amp;#039; =&amp;gt; &amp;#039;LLL:EXT:gbrma/Resources/Private/Language/locallang_db.xlf:tx_gbrma_domain_model_rna.rma_user&amp;#039;,&lt;br /&gt;
			&amp;#039;config&amp;#039; =&amp;gt; array(&lt;br /&gt;
				&amp;#039;type&amp;#039; =&amp;gt; &amp;#039;select&amp;#039;,&lt;br /&gt;
				&amp;#039;items&amp;#039; =&amp;gt; array (&lt;br /&gt;
					array(&amp;#039;&amp;#039;,0),&lt;br /&gt;
				),&lt;br /&gt;
				&amp;#039;foreign_table&amp;#039; =&amp;gt; &amp;#039;fe_users&amp;#039;,&lt;br /&gt;
				&amp;#039;foreign_class&amp;#039; =&amp;gt; &amp;#039;\TYPO3\CMS\Extbase\Domain\Model\FrontendUser&amp;#039;,&lt;br /&gt;
				&amp;#039;minitems&amp;#039; =&amp;gt; 0,&lt;br /&gt;
				&amp;#039;maxitems&amp;#039; =&amp;gt; 1,&lt;br /&gt;
				&amp;#039;size&amp;#039; =&amp;gt; 1,&lt;br /&gt;
				&amp;#039;appearance&amp;#039; =&amp;gt; array(&lt;br /&gt;
					&amp;#039;collapseAll&amp;#039; =&amp;gt; 0,&lt;br /&gt;
					&amp;#039;levelLinksPosition&amp;#039; =&amp;gt; &amp;#039;top&amp;#039;,&lt;br /&gt;
					&amp;#039;showSynchronizationLink&amp;#039; =&amp;gt; 1,&lt;br /&gt;
					&amp;#039;showPossibleLocalizationRecords&amp;#039; =&amp;gt; 1,&lt;br /&gt;
					&amp;#039;showAllLocalizationLink&amp;#039; =&amp;gt; 1&lt;br /&gt;
				),&lt;br /&gt;
			),&lt;br /&gt;
		),&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Model ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geobit\Gbrma\Domain\Model Rma.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	 * rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var integer&lt;br /&gt;
	 */&lt;br /&gt;
	protected $rmaUser = 0;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	 * Returns the rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return integer $rmaUser&lt;br /&gt;
	 */&lt;br /&gt;
	public function getRmaUser() {&lt;br /&gt;
		return $this-&amp;gt;rmaUser;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Sets the rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param integer $rmaUser&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	public function setRmaUser($rmaUser) {&lt;br /&gt;
		$this-&amp;gt;rmaUser = $rmaUser;&lt;br /&gt;
	}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
FrontendUser Repository bereitstellen (wir erweitern das von Extbase vorbereitete FrontendUser Repository, damit stehen uns dessen Objekte zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geobit\Gbrma\Controller RmaController.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	* FrontendUser Repository&lt;br /&gt;
	*&lt;br /&gt;
	* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	* @inject&lt;br /&gt;
	*/&lt;br /&gt;
	protected $userRepository;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Testen ob die fe_user jetzt zur Verfügung stehen kann man das z.B. in der List Action:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
		$user = $this-&amp;gt;userRepository-&amp;gt;findByUid(1);&lt;br /&gt;
		print \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( $user );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Achtung: findAll() geht nicht !&lt;br /&gt;
&lt;br /&gt;
Jetzt wollen beim anlegen eines Datensatzes den aktuell angemeldeten User hinterlegen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch in der Listenansicht möchten wir nur die Datensätze des aktuellen Users anzeige.&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Zugriff auf fe_users Daten über ID ==&lt;br /&gt;
Wir möchten in unserer Extension in einem Feld die ID eines Users speichern und später auf die Daten des Users zugreifen.&lt;br /&gt;
Um die Daten eines Users zu nutzen müssen wir:&lt;br /&gt;
&lt;br /&gt;
Einfach das bereits in der Extbase Extension vorhandene Repository in unseren Controller injecten&lt;br /&gt;
&lt;br /&gt;
Controller&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	* FrontendUser Repository&lt;br /&gt;
	*&lt;br /&gt;
	* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	* @inject&lt;br /&gt;
	*/&lt;br /&gt;
	protected $userRepository;&lt;br /&gt;
&lt;br /&gt;
        //... Zugriff z.B. um das Userobjekt des aktuellen Users zu holen&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get current user obj&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	 */&lt;br /&gt;
	private function getCurrentUser() {&lt;br /&gt;
		if ($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user[&amp;#039;uid&amp;#039;] &amp;gt; 0) {&lt;br /&gt;
			$userId = $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user[&amp;#039;uid&amp;#039;];&lt;br /&gt;
			$this-&amp;gt;currentUser = $this-&amp;gt;userRepository-&amp;gt;findByUid($userId);&lt;br /&gt;
			return $this-&amp;gt;currentUser; &lt;br /&gt;
		}else return false;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Erweitern der fe_user um eigene Felder ==&lt;br /&gt;
FE-users um eigene Felder erweitern (http://t3-developer.com/extbase-fluid/cheats-extbase/model/verwendung-der-fe-users-in-extbase/ 2015-06)&lt;br /&gt;
&lt;br /&gt;
Soll die Tabelle FE-Users um eigene Felder erweitert werden, sind folgende Dateien anzupassen:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/extension_tables.sql&amp;#039;&amp;#039;&amp;#039; -&amp;gt; SQL Anweisung um die Tabellle FE-Users in der Datenbank um eigene Felder zu ergänzen&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/extension_tables.php&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Neue Felder im Backend verfügbar machen&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/Configuration/TypoScript/setup.txt&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Mapping der eigenen Tabellenfelder für Extbase&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/Classes/Domain/Model/MeinFeUserModel.php&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Objekte initialisieren und Setter/Getter setzen&lt;br /&gt;
&lt;br /&gt;
In den nachfolgenden Beispiellistings wird die fe-users Tabelle um ein Textfeld &amp;quot;Meinfeld&amp;quot; ergänzt.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datei: MeineExtension/extension_tables.sql&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE fe_users {&lt;br /&gt;
    mein_feld varchar(255) DEFAULT &amp;#039;&amp;#039; NOT NULL,&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datei: MeineExtension/ext_tables.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
//**************************************************//&lt;br /&gt;
// USER | Erweiterung fe_users um Feld MeinFeld&lt;br /&gt;
//**************************************************//&lt;br /&gt;
t3lib_div::loadTCA(&amp;#039;fe_users&amp;#039;);&lt;br /&gt;
$addColumnArray = array(&lt;br /&gt;
    &amp;#039;mein_feld&amp;#039; =&amp;gt; array(&lt;br /&gt;
        &amp;#039;exclude&amp;#039; =&amp;gt; 0,&lt;br /&gt;
        &amp;#039;label&amp;#039; =&amp;gt; &amp;#039;Feldbeschriftung:&amp;#039;,&lt;br /&gt;
        &amp;#039;config&amp;#039; =&amp;gt; array(&lt;br /&gt;
        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;input&amp;#039;,&lt;br /&gt;
        &amp;#039;size&amp;#039; =&amp;gt; 20,&lt;br /&gt;
        &amp;#039;eval&amp;#039; =&amp;gt; &amp;#039;trim&amp;#039;,&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
);&lt;br /&gt;
t3lib_extMgm::addTCAcolumns(&amp;#039;fe_users&amp;#039;, $addColumnArray);&lt;br /&gt;
t3lib_extMgm::addToAllTCAtypes(&amp;#039;fe_users&amp;#039;, &amp;#039;--div--;NeuerReiter , mein_feld&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Erweiterte FE_User Felder in eigener Extension nutzen ==&lt;br /&gt;
Siehe auch http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html (2015-06) dort wird noch die alte Schreibweise statt der Namespace Schreibweise genutzt.&lt;br /&gt;
&lt;br /&gt;
Wenn wir von anderen Extension erweiterte Felder aus fe_users nutzen, oder Felder selbst erweitern wollen, können wir nciht wie oben vorgehen und direkt in den Controller injecten. Wir müssen wir für unsere User in unserer Extension ein &amp;#039;&amp;#039;&amp;#039;eigenes Model&amp;#039;&amp;#039;&amp;#039; und ein &amp;#039;&amp;#039;&amp;#039;eigenes Repository&amp;#039;&amp;#039;&amp;#039; einbauen. Und &amp;#039;&amp;#039;&amp;#039;dieses injecten&amp;#039;&amp;#039;&amp;#039;. Zum Glück ist in Extbase für fe_users einiges bereitgestellt, das wir durch erweitern direkt übernehmen können.&lt;br /&gt;
=== Eigenes Model für die fe_user erstellen ===&lt;br /&gt;
In der eigenen Extension zuerst ein &amp;#039;&amp;#039;&amp;#039;Model anlegen&amp;#039;&amp;#039;&amp;#039;. Normalerweise wird dazu Abstract Entity erweitert und alle Felder selbst anlegen. Wir sparen uns Arbeit und &amp;#039;&amp;#039;&amp;#039;erweitern&amp;#039;&amp;#039;&amp;#039; diesmal das bereits von Extbase angelegte Model, somit haben wir dessen Eigenschaften bereits (kann man schön in der extbase extension im Quelltext sehen.)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class RmaUser extends TYPO3\CMS\Extbase\Domain\Model\FrontendUser {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Um nur die Standardfelder der fe_users zu benutzen und die Daten zu holen, brauchen wir diese Datei nicht anzulegen Siehe Beispiel oben.&lt;br /&gt;
&lt;br /&gt;
=== Repository für die fe_user erstellen ===&lt;br /&gt;
Auch hier erweitern wir das bereits vorhandene Repository. Also statt \TYPO3\CMS\Extbase\Persistence\Repository zu erweitern. Nehmen wir:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class RmaUser extends TYPO3\CMS\Extbase\Domain\Model\FrontendUser {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mapping für die fe_user Standardfelder===&lt;br /&gt;
Wir haben in unserer Extension jetzt das Datenmodell und die Datenrepository also das Behältnis. Extbase weiß aber noch nicht welche Tabelle es nehmen soll, wenn eine Anfrage unserer Extension kommt. Deshalb mappen wir unser Model auf die Tabelle fe_user. Das erledigen wir mit TypoScript:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;typoscript&amp;quot;&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
    Geobit/Gbrma/Domain/Model/RmaUser  {&lt;br /&gt;
        mapping {&lt;br /&gt;
            tableName = fe_users&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Model für weitere Felder der fe_users erweitern ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Todo&amp;#039;&amp;#039;&amp;#039; namespace schreibweise&lt;br /&gt;
&lt;br /&gt;
Jetzt können wir unser Model nutzen um alle Standard Felder zu nutzen. Jetzt müssen wir aber noch Zugriff auf Felder bekommen, die z.B. andere Extensions angelegt haben. Wir legen dazu die passenden Getter und Setter in unserem Model an. Im Beispiel gehen wir von einem Feld &amp;quot;comment&amp;quot; aus, das wir nutzen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class Tx_Testext1_Domain_Model_FrontendUser extends Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Comment&lt;br /&gt;
  *&lt;br /&gt;
  * @var string&lt;br /&gt;
  */&lt;br /&gt;
 protected $comment;&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Setter for comment&lt;br /&gt;
  *&lt;br /&gt;
  * @param string $comment&lt;br /&gt;
  * @return void&lt;br /&gt;
  */&lt;br /&gt;
 public function setComment ($comment) {&lt;br /&gt;
  $this-&amp;gt;comment = $comment;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Getter for comment&lt;br /&gt;
  *&lt;br /&gt;
  * @return string&lt;br /&gt;
  */&lt;br /&gt;
 public function getComment () {&lt;br /&gt;
  return $this-&amp;gt;comment;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Neues Model im Controller nutzen ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Todo&amp;#039;&amp;#039;&amp;#039; neue Namespace Schreibweise&lt;br /&gt;
&lt;br /&gt;
Mittels Injection kann man das neue Model im Controller nutzen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var Tx_Testext1_Domain_Repository_FrontendUserRepository&lt;br /&gt;
 */&lt;br /&gt;
protected $userRepository;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Inject the user repository&lt;br /&gt;
 *&lt;br /&gt;
 * @param Tx_Testext1_Domain_Repository_FrontendUserRepository $userRepository&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function injectFrontendUserRepository (Tx_Testext1_Domain_Repository_FrontendUserRepository $userRepository) {&lt;br /&gt;
 $this-&amp;gt;userRepository = $userRepository;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Test action&lt;br /&gt;
 *&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function testAction () {&lt;br /&gt;
 $user = $this-&amp;gt;userRepository-&amp;gt;findByUid(1);&lt;br /&gt;
 t3lib_utility_Debug::debug($user);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Eigene Felder erweitern ===&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
== Fallstricke ==&lt;br /&gt;
=== SQL Exeption - falsche Tabelle ===&lt;br /&gt;
Hier liegt meist ein falsches Mapping vor. Je nachdem wie das UserModel erzeugt wurde muß man beim Mapping darauf achten das das Plugin Model nochmal auf die fe_users gemappt wird (und nicht das Extbase Model)&lt;br /&gt;
Bei ältern Typo3 Versionen wird das Mapping Setup nur in der ext_typoscript_setup.txt erkannt.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: http://wiki.zone30.info/wikizone/index.php/Extbase_-_Zugriff_auf_Tabellen_anderer_Extbase_Extensions#Tabelle_mappen&lt;br /&gt;
=== Extbase Model ab 6.0 ===&lt;br /&gt;
TYPO3\CMS\Extbase\Domain\Model\FrontendUser&lt;br /&gt;
&lt;br /&gt;
Im Seiten TS der Rootseite habe ich folgenden Eintrag:&lt;br /&gt;
TCAdefaults.fe_users.tx_extbase_type = TYPO3\CMS\Extbase\Domain\Model\FrontendUser&lt;br /&gt;
TCAdefaults.fe_groups.tx_extbase_type = TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup&lt;br /&gt;
&lt;br /&gt;
=== FE-User müssen einer Gruppe zugeordnet sein ===&lt;/div&gt;</summary>
		<author><name>87.165.0.123</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Extbase_-_Zugriff_auf_die_fe_user_Tabelle&amp;diff=21277</id>
		<title>Extbase - Zugriff auf die fe user Tabelle</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Extbase_-_Zugriff_auf_die_fe_user_Tabelle&amp;diff=21277"/>
		<updated>2015-10-23T18:27:22Z</updated>

		<summary type="html">&lt;p&gt;87.165.0.123: /* Neues Model im Controller nutzen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://wiki.zone30.info/wikizone/index.php/Extbase_Extensions_-_Snippets_und_Glossar#Auf_Daten_andererer_Modelle_.2F_Repositorys_im_Controller_zugreifen._.28verkn.C3.BCpfte_Daten_auflisten.29&lt;br /&gt;
&lt;br /&gt;
http://www.derhansen.de/2012/06/zugriff-auf-frontend-user-tabelle-aus.html&lt;br /&gt;
&lt;br /&gt;
http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Wie kriege ich die Daten ===&lt;br /&gt;
Wir möchten die Daten der fe_users Tabelle, also die Frontenduser in unserer eigenen Extension verwenden. Extbase hat ein eigenes Domain Model und ein eigenes Repository vorbereitet um auf die Standard Felder der fe_users Tabelle zuzugreifen. Das bedeutet man kann die Daten einfach nutzen, wenn man sein eigenes Model erweitert. Ich brauche keine Getter und Setter Methoden etc. mehr. Zu definieren.&lt;br /&gt;
=== fe_users extended ===&lt;br /&gt;
Allerdings wird gerade die Tabelle fe_users oftmals von anderen Extensions um weitere Felder erweitert (z.B. sr_feuser_register). Diese Felder sind natürlich nicht im Model von extbase enthalten. Deshalb muß man sie nochmal separat behandeln. Man erweitert einfach sein eigenes Datenmodell um diese Felder. So funktioniert das ganze.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt möchten wir vielleicht auch noch die fe_users um eigene Felder erweitern.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
* Nicht verwechseln: &amp;#039;&amp;#039;$user=$GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user;&amp;#039;&amp;#039; gibt den aktuell angemeldeten User zurück. &lt;br /&gt;
* findAll() soll laut einem Forumseintrag nicht funktionieren. $user = $this-&amp;gt;userRepository-&amp;gt;findByUid($uid); schon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Zugriff auf fe_users Daten in eigener Extension  ==&lt;br /&gt;
Wenn man einfach nur ein paar Daten aus fe_users braucht, kann man das Standard Repository einfach injecten.&lt;br /&gt;
=== Übersicht ===&lt;br /&gt;
# fe_users-Repository per Dependency Injection zu Verfügung stellen&lt;br /&gt;
# Auslesen der Userdaten&lt;br /&gt;
# Mapping beachten&lt;br /&gt;
&lt;br /&gt;
=== fe_user Tabelle  Injecten ===&lt;br /&gt;
Im Controller deiner Extension&lt;br /&gt;
Ab 6.0&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
 * @inject&lt;br /&gt;
 */&lt;br /&gt;
protected $frontendUserRepository;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old School (&amp;lt;4.7)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var Tx_Extbase_Domain_Repository_FrontendUserRepository&lt;br /&gt;
 */&lt;br /&gt;
protected $userRepository;    &lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Inject the user repository&lt;br /&gt;
 *&lt;br /&gt;
 * @param Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function injectFrontendUserRepository(Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository) {&lt;br /&gt;
    $this-&amp;gt;userRepository = $userRepository;&lt;br /&gt;
}  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Userdaten holen ===&lt;br /&gt;
Z.B. im Controller:&lt;br /&gt;
 $user = $this-&amp;gt;userRepository-&amp;gt;findByUid($uid);&lt;br /&gt;
&lt;br /&gt;
=== Problem: User werden nicht ausgegeben weil record type nicht gesetzt ist ===&lt;br /&gt;
Hinweis: In neueren Versionen von Extbase ist das Mapping anders definiert -&amp;gt; nur bei alten Versionen wichtig (nicht verifiziert)&lt;br /&gt;
&lt;br /&gt;
Achtung: Extbase erweitert die fe_users und fe_groups um &amp;#039;&amp;#039;&amp;#039;das Feld tx_extbase_type (Record Type) Ist dies nicht vorhanden gibt es nichts zurück.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Im TypoScript definiert Extbase&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
 Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
  mapping.recordType = Tx_Extbase_Domain_Model_FrontendUser&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Im Mapping ist der recordType gesetzt d.h. es sucht nur fe_user mit dem recordType Tx_Extbase_Domain_Model_FrontendUser &lt;br /&gt;
&lt;br /&gt;
Lösung:&lt;br /&gt;
* Recordtype setzen&lt;br /&gt;
* oder Mapping löschen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
 Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
  mapping.recordType &amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* zusätzlich evtl. Recordtype automatisch vorbelegen -&amp;gt; im PageTS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TCAdefaults.fe_users.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUser&lt;br /&gt;
TCAdefaults.fe_groups.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUserGroup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: FE User in eigener Extension speichern ==&lt;br /&gt;
Am Beispiel der Extension gbrma. Der aktuell angemeldete User soll im Feld rma_user gespeichert werden. Dieses gehört zum Model &amp;#039;Rma&amp;#039;&lt;br /&gt;
=== Vorgehen ===&lt;br /&gt;
* Feld in ext_tables.sql anlegen -&amp;gt; Datenbank&lt;br /&gt;
* Feld in TCA anlegen -&amp;gt; Backend&lt;br /&gt;
* Feld in Model anlegen und Controller bearbeiten:&lt;br /&gt;
** mit Getter und Setter ergänzen-&amp;gt; Extbase Handling &lt;br /&gt;
** aktuell angemeldeter User abfragen&lt;br /&gt;
** User speichern (in create Action)&lt;br /&gt;
* Templates anpassen (wird hier nicht gezeigt)&lt;br /&gt;
=== ext_tables.sql ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
rma_user int(11) unsigned DEFAULT &amp;#039;0&amp;#039; NOT NULL,&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TCA ===&lt;br /&gt;
Configuration/TCA/Rma.php&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
		&amp;#039;rma_user&amp;#039; =&amp;gt; array(&lt;br /&gt;
			&amp;#039;exclude&amp;#039; =&amp;gt; 1,&lt;br /&gt;
			&amp;#039;label&amp;#039; =&amp;gt; &amp;#039;LLL:EXT:gbrma/Resources/Private/Language/locallang_db.xlf:tx_gbrma_domain_model_rna.rma_user&amp;#039;,&lt;br /&gt;
			&amp;#039;config&amp;#039; =&amp;gt; array(&lt;br /&gt;
				&amp;#039;type&amp;#039; =&amp;gt; &amp;#039;select&amp;#039;,&lt;br /&gt;
				&amp;#039;items&amp;#039; =&amp;gt; array (&lt;br /&gt;
					array(&amp;#039;&amp;#039;,0),&lt;br /&gt;
				),&lt;br /&gt;
				&amp;#039;foreign_table&amp;#039; =&amp;gt; &amp;#039;fe_users&amp;#039;,&lt;br /&gt;
				&amp;#039;foreign_class&amp;#039; =&amp;gt; &amp;#039;\TYPO3\CMS\Extbase\Domain\Model\FrontendUser&amp;#039;,&lt;br /&gt;
				&amp;#039;minitems&amp;#039; =&amp;gt; 0,&lt;br /&gt;
				&amp;#039;maxitems&amp;#039; =&amp;gt; 1,&lt;br /&gt;
				&amp;#039;size&amp;#039; =&amp;gt; 1,&lt;br /&gt;
				&amp;#039;appearance&amp;#039; =&amp;gt; array(&lt;br /&gt;
					&amp;#039;collapseAll&amp;#039; =&amp;gt; 0,&lt;br /&gt;
					&amp;#039;levelLinksPosition&amp;#039; =&amp;gt; &amp;#039;top&amp;#039;,&lt;br /&gt;
					&amp;#039;showSynchronizationLink&amp;#039; =&amp;gt; 1,&lt;br /&gt;
					&amp;#039;showPossibleLocalizationRecords&amp;#039; =&amp;gt; 1,&lt;br /&gt;
					&amp;#039;showAllLocalizationLink&amp;#039; =&amp;gt; 1&lt;br /&gt;
				),&lt;br /&gt;
			),&lt;br /&gt;
		),&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Model ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geobit\Gbrma\Domain\Model Rma.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	 * rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var integer&lt;br /&gt;
	 */&lt;br /&gt;
	protected $rmaUser = 0;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	 * Returns the rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return integer $rmaUser&lt;br /&gt;
	 */&lt;br /&gt;
	public function getRmaUser() {&lt;br /&gt;
		return $this-&amp;gt;rmaUser;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Sets the rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param integer $rmaUser&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	public function setRmaUser($rmaUser) {&lt;br /&gt;
		$this-&amp;gt;rmaUser = $rmaUser;&lt;br /&gt;
	}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
FrontendUser Repository bereitstellen (wir erweitern das von Extbase vorbereitete FrontendUser Repository, damit stehen uns dessen Objekte zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geobit\Gbrma\Controller RmaController.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	* FrontendUser Repository&lt;br /&gt;
	*&lt;br /&gt;
	* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	* @inject&lt;br /&gt;
	*/&lt;br /&gt;
	protected $userRepository;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Testen ob die fe_user jetzt zur Verfügung stehen kann man das z.B. in der List Action:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
		$user = $this-&amp;gt;userRepository-&amp;gt;findByUid(1);&lt;br /&gt;
		print \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( $user );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Achtung: findAll() geht nicht !&lt;br /&gt;
&lt;br /&gt;
Jetzt wollen beim anlegen eines Datensatzes den aktuell angemeldeten User hinterlegen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch in der Listenansicht möchten wir nur die Datensätze des aktuellen Users anzeige.&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Zugriff auf fe_users Daten über ID ==&lt;br /&gt;
Wir möchten in unserer Extension in einem Feld die ID eines Users speichern und später auf die Daten des Users zugreifen.&lt;br /&gt;
Um die Daten eines Users zu nutzen müssen wir:&lt;br /&gt;
&lt;br /&gt;
Einfach das bereits in der Extbase Extension vorhandene Repository in unseren Controller injecten&lt;br /&gt;
&lt;br /&gt;
Controller&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	* FrontendUser Repository&lt;br /&gt;
	*&lt;br /&gt;
	* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	* @inject&lt;br /&gt;
	*/&lt;br /&gt;
	protected $userRepository;&lt;br /&gt;
&lt;br /&gt;
        //... Zugriff z.B. um das Userobjekt des aktuellen Users zu holen&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get current user obj&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	 */&lt;br /&gt;
	private function getCurrentUser() {&lt;br /&gt;
		if ($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user[&amp;#039;uid&amp;#039;] &amp;gt; 0) {&lt;br /&gt;
			$userId = $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user[&amp;#039;uid&amp;#039;];&lt;br /&gt;
			$this-&amp;gt;currentUser = $this-&amp;gt;userRepository-&amp;gt;findByUid($userId);&lt;br /&gt;
			return $this-&amp;gt;currentUser; &lt;br /&gt;
		}else return false;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Erweitern der fe_user um eigene Felder ==&lt;br /&gt;
FE-users um eigene Felder erweitern (http://t3-developer.com/extbase-fluid/cheats-extbase/model/verwendung-der-fe-users-in-extbase/ 2015-06)&lt;br /&gt;
&lt;br /&gt;
Soll die Tabelle FE-Users um eigene Felder erweitert werden, sind folgende Dateien anzupassen:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/extension_tables.sql&amp;#039;&amp;#039;&amp;#039; -&amp;gt; SQL Anweisung um die Tabellle FE-Users in der Datenbank um eigene Felder zu ergänzen&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/extension_tables.php&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Neue Felder im Backend verfügbar machen&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/Configuration/TypoScript/setup.txt&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Mapping der eigenen Tabellenfelder für Extbase&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/Classes/Domain/Model/MeinFeUserModel.php&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Objekte initialisieren und Setter/Getter setzen&lt;br /&gt;
&lt;br /&gt;
In den nachfolgenden Beispiellistings wird die fe-users Tabelle um ein Textfeld &amp;quot;Meinfeld&amp;quot; ergänzt.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datei: MeineExtension/extension_tables.sql&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE fe_users {&lt;br /&gt;
    mein_feld varchar(255) DEFAULT &amp;#039;&amp;#039; NOT NULL,&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datei: MeineExtension/ext_tables.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
//**************************************************//&lt;br /&gt;
// USER | Erweiterung fe_users um Feld MeinFeld&lt;br /&gt;
//**************************************************//&lt;br /&gt;
t3lib_div::loadTCA(&amp;#039;fe_users&amp;#039;);&lt;br /&gt;
$addColumnArray = array(&lt;br /&gt;
    &amp;#039;mein_feld&amp;#039; =&amp;gt; array(&lt;br /&gt;
        &amp;#039;exclude&amp;#039; =&amp;gt; 0,&lt;br /&gt;
        &amp;#039;label&amp;#039; =&amp;gt; &amp;#039;Feldbeschriftung:&amp;#039;,&lt;br /&gt;
        &amp;#039;config&amp;#039; =&amp;gt; array(&lt;br /&gt;
        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;input&amp;#039;,&lt;br /&gt;
        &amp;#039;size&amp;#039; =&amp;gt; 20,&lt;br /&gt;
        &amp;#039;eval&amp;#039; =&amp;gt; &amp;#039;trim&amp;#039;,&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
);&lt;br /&gt;
t3lib_extMgm::addTCAcolumns(&amp;#039;fe_users&amp;#039;, $addColumnArray);&lt;br /&gt;
t3lib_extMgm::addToAllTCAtypes(&amp;#039;fe_users&amp;#039;, &amp;#039;--div--;NeuerReiter , mein_feld&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Erweiterte FE_User Felder in eigener Extension nutzen ==&lt;br /&gt;
Siehe auch http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html (2015-06) dort wird noch die alte Schreibweise statt der Namespace Schreibweise genutzt.&lt;br /&gt;
&lt;br /&gt;
Wenn wir von anderen Extension erweiterte Felder aus fe_users nutzen, oder Felder selbst erweitern wollen, können wir nciht wie oben vorgehen und direkt in den Controller injecten. Wir müssen wir für unsere User in unserer Extension ein &amp;#039;&amp;#039;&amp;#039;eigenes Model&amp;#039;&amp;#039;&amp;#039; und ein &amp;#039;&amp;#039;&amp;#039;eigenes Repository&amp;#039;&amp;#039;&amp;#039; einbauen. Und &amp;#039;&amp;#039;&amp;#039;dieses injecten&amp;#039;&amp;#039;&amp;#039;. Zum Glück ist in Extbase für fe_users einiges bereitgestellt, das wir durch erweitern direkt übernehmen können.&lt;br /&gt;
=== Eigenes Model für die fe_user erstellen ===&lt;br /&gt;
In der eigenen Extension zuerst ein &amp;#039;&amp;#039;&amp;#039;Model anlegen&amp;#039;&amp;#039;&amp;#039;. Normalerweise wird dazu Abstract Entity erweitert und alle Felder selbst anlegen. Wir sparen uns Arbeit und &amp;#039;&amp;#039;&amp;#039;erweitern&amp;#039;&amp;#039;&amp;#039; diesmal das bereits von Extbase angelegte Model, somit haben wir dessen Eigenschaften bereits (kann man schön in der extbase extension im Quelltext sehen.)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class RmaUser extends TYPO3\CMS\Extbase\Domain\Model\FrontendUser {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Um nur die Standardfelder der fe_users zu benutzen und die Daten zu holen, brauchen wir diese Datei nicht anzulegen Siehe Beispiel oben.&lt;br /&gt;
&lt;br /&gt;
=== Repository für die fe_user erstellen ===&lt;br /&gt;
Auch hier erweitern wir das bereits vorhandene Repository. Also statt \TYPO3\CMS\Extbase\Persistence\Repository zu erweitern. Nehmen wir:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class RmaUser extends TYPO3\CMS\Extbase\Domain\Model\FrontendUser {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mapping für die fe_user Standardfelder===&lt;br /&gt;
Wir haben in unserer Extension jetzt das Datenmodell und die Datenrepository also das Behältnis. Extbase weiß aber noch nicht welche Tabelle es nehmen soll, wenn eine Anfrage unserer Extension kommt. Deshalb mappen wir unser Model auf die Tabelle fe_user. Das erledigen wir mit TypoScript:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;typoscript&amp;quot;&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
    Geobit/Gbrma/Domain/Model/RmaUser  {&lt;br /&gt;
        mapping {&lt;br /&gt;
            tableName = fe_users&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Model für weitere Felder der fe_users erweitern ===&lt;br /&gt;
Jetzt können wir unser Model nutzen um alle Standard Felder zu nutzen. Jetzt müssen wir aber noch Zugriff auf Felder bekommen, die z.B. andere Extensions angelegt haben. Wir legen dazu die passenden Getter und Setter in unserem Model an. Im Beispiel gehen wir von einem Feld &amp;quot;comment&amp;quot; aus, das wir nutzen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class Tx_Testext1_Domain_Model_FrontendUser extends Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Comment&lt;br /&gt;
  *&lt;br /&gt;
  * @var string&lt;br /&gt;
  */&lt;br /&gt;
 protected $comment;&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Setter for comment&lt;br /&gt;
  *&lt;br /&gt;
  * @param string $comment&lt;br /&gt;
  * @return void&lt;br /&gt;
  */&lt;br /&gt;
 public function setComment ($comment) {&lt;br /&gt;
  $this-&amp;gt;comment = $comment;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Getter for comment&lt;br /&gt;
  *&lt;br /&gt;
  * @return string&lt;br /&gt;
  */&lt;br /&gt;
 public function getComment () {&lt;br /&gt;
  return $this-&amp;gt;comment;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Neues Model im Controller nutzen ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Todo&amp;#039;&amp;#039;&amp;#039; neue Namespace Schreibweise&lt;br /&gt;
&lt;br /&gt;
Mittels Injection kann man das neue Model im Controller nutzen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var Tx_Testext1_Domain_Repository_FrontendUserRepository&lt;br /&gt;
 */&lt;br /&gt;
protected $userRepository;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Inject the user repository&lt;br /&gt;
 *&lt;br /&gt;
 * @param Tx_Testext1_Domain_Repository_FrontendUserRepository $userRepository&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function injectFrontendUserRepository (Tx_Testext1_Domain_Repository_FrontendUserRepository $userRepository) {&lt;br /&gt;
 $this-&amp;gt;userRepository = $userRepository;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Test action&lt;br /&gt;
 *&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function testAction () {&lt;br /&gt;
 $user = $this-&amp;gt;userRepository-&amp;gt;findByUid(1);&lt;br /&gt;
 t3lib_utility_Debug::debug($user);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Eigene Felder erweitern ===&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
== Fallstricke ==&lt;br /&gt;
=== SQL Exeption - falsche Tabelle ===&lt;br /&gt;
Hier liegt meist ein falsches Mapping vor. Je nachdem wie das UserModel erzeugt wurde muß man beim Mapping darauf achten das das Plugin Model nochmal auf die fe_users gemappt wird (und nicht das Extbase Model)&lt;br /&gt;
Bei ältern Typo3 Versionen wird das Mapping Setup nur in der ext_typoscript_setup.txt erkannt.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: http://wiki.zone30.info/wikizone/index.php/Extbase_-_Zugriff_auf_Tabellen_anderer_Extbase_Extensions#Tabelle_mappen&lt;br /&gt;
=== Extbase Model ab 6.0 ===&lt;br /&gt;
TYPO3\CMS\Extbase\Domain\Model\FrontendUser&lt;br /&gt;
&lt;br /&gt;
Im Seiten TS der Rootseite habe ich folgenden Eintrag:&lt;br /&gt;
TCAdefaults.fe_users.tx_extbase_type = TYPO3\CMS\Extbase\Domain\Model\FrontendUser&lt;br /&gt;
TCAdefaults.fe_groups.tx_extbase_type = TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup&lt;br /&gt;
&lt;br /&gt;
=== FE-User müssen einer Gruppe zugeordnet sein ===&lt;/div&gt;</summary>
		<author><name>87.165.0.123</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Extbase_-_Zugriff_auf_die_fe_user_Tabelle&amp;diff=21276</id>
		<title>Extbase - Zugriff auf die fe user Tabelle</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Extbase_-_Zugriff_auf_die_fe_user_Tabelle&amp;diff=21276"/>
		<updated>2015-10-23T18:26:42Z</updated>

		<summary type="html">&lt;p&gt;87.165.0.123: /* Beispiel: Erweiterte FE_User Felder in eigener Extension nutzen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://wiki.zone30.info/wikizone/index.php/Extbase_Extensions_-_Snippets_und_Glossar#Auf_Daten_andererer_Modelle_.2F_Repositorys_im_Controller_zugreifen._.28verkn.C3.BCpfte_Daten_auflisten.29&lt;br /&gt;
&lt;br /&gt;
http://www.derhansen.de/2012/06/zugriff-auf-frontend-user-tabelle-aus.html&lt;br /&gt;
&lt;br /&gt;
http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Wie kriege ich die Daten ===&lt;br /&gt;
Wir möchten die Daten der fe_users Tabelle, also die Frontenduser in unserer eigenen Extension verwenden. Extbase hat ein eigenes Domain Model und ein eigenes Repository vorbereitet um auf die Standard Felder der fe_users Tabelle zuzugreifen. Das bedeutet man kann die Daten einfach nutzen, wenn man sein eigenes Model erweitert. Ich brauche keine Getter und Setter Methoden etc. mehr. Zu definieren.&lt;br /&gt;
=== fe_users extended ===&lt;br /&gt;
Allerdings wird gerade die Tabelle fe_users oftmals von anderen Extensions um weitere Felder erweitert (z.B. sr_feuser_register). Diese Felder sind natürlich nicht im Model von extbase enthalten. Deshalb muß man sie nochmal separat behandeln. Man erweitert einfach sein eigenes Datenmodell um diese Felder. So funktioniert das ganze.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt möchten wir vielleicht auch noch die fe_users um eigene Felder erweitern.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
* Nicht verwechseln: &amp;#039;&amp;#039;$user=$GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user;&amp;#039;&amp;#039; gibt den aktuell angemeldeten User zurück. &lt;br /&gt;
* findAll() soll laut einem Forumseintrag nicht funktionieren. $user = $this-&amp;gt;userRepository-&amp;gt;findByUid($uid); schon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Zugriff auf fe_users Daten in eigener Extension  ==&lt;br /&gt;
Wenn man einfach nur ein paar Daten aus fe_users braucht, kann man das Standard Repository einfach injecten.&lt;br /&gt;
=== Übersicht ===&lt;br /&gt;
# fe_users-Repository per Dependency Injection zu Verfügung stellen&lt;br /&gt;
# Auslesen der Userdaten&lt;br /&gt;
# Mapping beachten&lt;br /&gt;
&lt;br /&gt;
=== fe_user Tabelle  Injecten ===&lt;br /&gt;
Im Controller deiner Extension&lt;br /&gt;
Ab 6.0&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
 * @inject&lt;br /&gt;
 */&lt;br /&gt;
protected $frontendUserRepository;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old School (&amp;lt;4.7)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var Tx_Extbase_Domain_Repository_FrontendUserRepository&lt;br /&gt;
 */&lt;br /&gt;
protected $userRepository;    &lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Inject the user repository&lt;br /&gt;
 *&lt;br /&gt;
 * @param Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function injectFrontendUserRepository(Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository) {&lt;br /&gt;
    $this-&amp;gt;userRepository = $userRepository;&lt;br /&gt;
}  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Userdaten holen ===&lt;br /&gt;
Z.B. im Controller:&lt;br /&gt;
 $user = $this-&amp;gt;userRepository-&amp;gt;findByUid($uid);&lt;br /&gt;
&lt;br /&gt;
=== Problem: User werden nicht ausgegeben weil record type nicht gesetzt ist ===&lt;br /&gt;
Hinweis: In neueren Versionen von Extbase ist das Mapping anders definiert -&amp;gt; nur bei alten Versionen wichtig (nicht verifiziert)&lt;br /&gt;
&lt;br /&gt;
Achtung: Extbase erweitert die fe_users und fe_groups um &amp;#039;&amp;#039;&amp;#039;das Feld tx_extbase_type (Record Type) Ist dies nicht vorhanden gibt es nichts zurück.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Im TypoScript definiert Extbase&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
 Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
  mapping.recordType = Tx_Extbase_Domain_Model_FrontendUser&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Im Mapping ist der recordType gesetzt d.h. es sucht nur fe_user mit dem recordType Tx_Extbase_Domain_Model_FrontendUser &lt;br /&gt;
&lt;br /&gt;
Lösung:&lt;br /&gt;
* Recordtype setzen&lt;br /&gt;
* oder Mapping löschen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
 Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
  mapping.recordType &amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* zusätzlich evtl. Recordtype automatisch vorbelegen -&amp;gt; im PageTS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TCAdefaults.fe_users.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUser&lt;br /&gt;
TCAdefaults.fe_groups.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUserGroup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: FE User in eigener Extension speichern ==&lt;br /&gt;
Am Beispiel der Extension gbrma. Der aktuell angemeldete User soll im Feld rma_user gespeichert werden. Dieses gehört zum Model &amp;#039;Rma&amp;#039;&lt;br /&gt;
=== Vorgehen ===&lt;br /&gt;
* Feld in ext_tables.sql anlegen -&amp;gt; Datenbank&lt;br /&gt;
* Feld in TCA anlegen -&amp;gt; Backend&lt;br /&gt;
* Feld in Model anlegen und Controller bearbeiten:&lt;br /&gt;
** mit Getter und Setter ergänzen-&amp;gt; Extbase Handling &lt;br /&gt;
** aktuell angemeldeter User abfragen&lt;br /&gt;
** User speichern (in create Action)&lt;br /&gt;
* Templates anpassen (wird hier nicht gezeigt)&lt;br /&gt;
=== ext_tables.sql ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
rma_user int(11) unsigned DEFAULT &amp;#039;0&amp;#039; NOT NULL,&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TCA ===&lt;br /&gt;
Configuration/TCA/Rma.php&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
		&amp;#039;rma_user&amp;#039; =&amp;gt; array(&lt;br /&gt;
			&amp;#039;exclude&amp;#039; =&amp;gt; 1,&lt;br /&gt;
			&amp;#039;label&amp;#039; =&amp;gt; &amp;#039;LLL:EXT:gbrma/Resources/Private/Language/locallang_db.xlf:tx_gbrma_domain_model_rna.rma_user&amp;#039;,&lt;br /&gt;
			&amp;#039;config&amp;#039; =&amp;gt; array(&lt;br /&gt;
				&amp;#039;type&amp;#039; =&amp;gt; &amp;#039;select&amp;#039;,&lt;br /&gt;
				&amp;#039;items&amp;#039; =&amp;gt; array (&lt;br /&gt;
					array(&amp;#039;&amp;#039;,0),&lt;br /&gt;
				),&lt;br /&gt;
				&amp;#039;foreign_table&amp;#039; =&amp;gt; &amp;#039;fe_users&amp;#039;,&lt;br /&gt;
				&amp;#039;foreign_class&amp;#039; =&amp;gt; &amp;#039;\TYPO3\CMS\Extbase\Domain\Model\FrontendUser&amp;#039;,&lt;br /&gt;
				&amp;#039;minitems&amp;#039; =&amp;gt; 0,&lt;br /&gt;
				&amp;#039;maxitems&amp;#039; =&amp;gt; 1,&lt;br /&gt;
				&amp;#039;size&amp;#039; =&amp;gt; 1,&lt;br /&gt;
				&amp;#039;appearance&amp;#039; =&amp;gt; array(&lt;br /&gt;
					&amp;#039;collapseAll&amp;#039; =&amp;gt; 0,&lt;br /&gt;
					&amp;#039;levelLinksPosition&amp;#039; =&amp;gt; &amp;#039;top&amp;#039;,&lt;br /&gt;
					&amp;#039;showSynchronizationLink&amp;#039; =&amp;gt; 1,&lt;br /&gt;
					&amp;#039;showPossibleLocalizationRecords&amp;#039; =&amp;gt; 1,&lt;br /&gt;
					&amp;#039;showAllLocalizationLink&amp;#039; =&amp;gt; 1&lt;br /&gt;
				),&lt;br /&gt;
			),&lt;br /&gt;
		),&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Model ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geobit\Gbrma\Domain\Model Rma.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	 * rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var integer&lt;br /&gt;
	 */&lt;br /&gt;
	protected $rmaUser = 0;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	 * Returns the rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return integer $rmaUser&lt;br /&gt;
	 */&lt;br /&gt;
	public function getRmaUser() {&lt;br /&gt;
		return $this-&amp;gt;rmaUser;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Sets the rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param integer $rmaUser&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	public function setRmaUser($rmaUser) {&lt;br /&gt;
		$this-&amp;gt;rmaUser = $rmaUser;&lt;br /&gt;
	}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
FrontendUser Repository bereitstellen (wir erweitern das von Extbase vorbereitete FrontendUser Repository, damit stehen uns dessen Objekte zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geobit\Gbrma\Controller RmaController.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	* FrontendUser Repository&lt;br /&gt;
	*&lt;br /&gt;
	* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	* @inject&lt;br /&gt;
	*/&lt;br /&gt;
	protected $userRepository;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Testen ob die fe_user jetzt zur Verfügung stehen kann man das z.B. in der List Action:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
		$user = $this-&amp;gt;userRepository-&amp;gt;findByUid(1);&lt;br /&gt;
		print \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( $user );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Achtung: findAll() geht nicht !&lt;br /&gt;
&lt;br /&gt;
Jetzt wollen beim anlegen eines Datensatzes den aktuell angemeldeten User hinterlegen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch in der Listenansicht möchten wir nur die Datensätze des aktuellen Users anzeige.&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Zugriff auf fe_users Daten über ID ==&lt;br /&gt;
Wir möchten in unserer Extension in einem Feld die ID eines Users speichern und später auf die Daten des Users zugreifen.&lt;br /&gt;
Um die Daten eines Users zu nutzen müssen wir:&lt;br /&gt;
&lt;br /&gt;
Einfach das bereits in der Extbase Extension vorhandene Repository in unseren Controller injecten&lt;br /&gt;
&lt;br /&gt;
Controller&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	* FrontendUser Repository&lt;br /&gt;
	*&lt;br /&gt;
	* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	* @inject&lt;br /&gt;
	*/&lt;br /&gt;
	protected $userRepository;&lt;br /&gt;
&lt;br /&gt;
        //... Zugriff z.B. um das Userobjekt des aktuellen Users zu holen&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get current user obj&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	 */&lt;br /&gt;
	private function getCurrentUser() {&lt;br /&gt;
		if ($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user[&amp;#039;uid&amp;#039;] &amp;gt; 0) {&lt;br /&gt;
			$userId = $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user[&amp;#039;uid&amp;#039;];&lt;br /&gt;
			$this-&amp;gt;currentUser = $this-&amp;gt;userRepository-&amp;gt;findByUid($userId);&lt;br /&gt;
			return $this-&amp;gt;currentUser; &lt;br /&gt;
		}else return false;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Erweitern der fe_user um eigene Felder ==&lt;br /&gt;
FE-users um eigene Felder erweitern (http://t3-developer.com/extbase-fluid/cheats-extbase/model/verwendung-der-fe-users-in-extbase/ 2015-06)&lt;br /&gt;
&lt;br /&gt;
Soll die Tabelle FE-Users um eigene Felder erweitert werden, sind folgende Dateien anzupassen:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/extension_tables.sql&amp;#039;&amp;#039;&amp;#039; -&amp;gt; SQL Anweisung um die Tabellle FE-Users in der Datenbank um eigene Felder zu ergänzen&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/extension_tables.php&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Neue Felder im Backend verfügbar machen&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/Configuration/TypoScript/setup.txt&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Mapping der eigenen Tabellenfelder für Extbase&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/Classes/Domain/Model/MeinFeUserModel.php&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Objekte initialisieren und Setter/Getter setzen&lt;br /&gt;
&lt;br /&gt;
In den nachfolgenden Beispiellistings wird die fe-users Tabelle um ein Textfeld &amp;quot;Meinfeld&amp;quot; ergänzt.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datei: MeineExtension/extension_tables.sql&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE fe_users {&lt;br /&gt;
    mein_feld varchar(255) DEFAULT &amp;#039;&amp;#039; NOT NULL,&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datei: MeineExtension/ext_tables.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
//**************************************************//&lt;br /&gt;
// USER | Erweiterung fe_users um Feld MeinFeld&lt;br /&gt;
//**************************************************//&lt;br /&gt;
t3lib_div::loadTCA(&amp;#039;fe_users&amp;#039;);&lt;br /&gt;
$addColumnArray = array(&lt;br /&gt;
    &amp;#039;mein_feld&amp;#039; =&amp;gt; array(&lt;br /&gt;
        &amp;#039;exclude&amp;#039; =&amp;gt; 0,&lt;br /&gt;
        &amp;#039;label&amp;#039; =&amp;gt; &amp;#039;Feldbeschriftung:&amp;#039;,&lt;br /&gt;
        &amp;#039;config&amp;#039; =&amp;gt; array(&lt;br /&gt;
        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;input&amp;#039;,&lt;br /&gt;
        &amp;#039;size&amp;#039; =&amp;gt; 20,&lt;br /&gt;
        &amp;#039;eval&amp;#039; =&amp;gt; &amp;#039;trim&amp;#039;,&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
);&lt;br /&gt;
t3lib_extMgm::addTCAcolumns(&amp;#039;fe_users&amp;#039;, $addColumnArray);&lt;br /&gt;
t3lib_extMgm::addToAllTCAtypes(&amp;#039;fe_users&amp;#039;, &amp;#039;--div--;NeuerReiter , mein_feld&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Erweiterte FE_User Felder in eigener Extension nutzen ==&lt;br /&gt;
Siehe auch http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html (2015-06) dort wird noch die alte Schreibweise statt der Namespace Schreibweise genutzt.&lt;br /&gt;
&lt;br /&gt;
Wenn wir von anderen Extension erweiterte Felder aus fe_users nutzen, oder Felder selbst erweitern wollen, können wir nciht wie oben vorgehen und direkt in den Controller injecten. Wir müssen wir für unsere User in unserer Extension ein &amp;#039;&amp;#039;&amp;#039;eigenes Model&amp;#039;&amp;#039;&amp;#039; und ein &amp;#039;&amp;#039;&amp;#039;eigenes Repository&amp;#039;&amp;#039;&amp;#039; einbauen. Und &amp;#039;&amp;#039;&amp;#039;dieses injecten&amp;#039;&amp;#039;&amp;#039;. Zum Glück ist in Extbase für fe_users einiges bereitgestellt, das wir durch erweitern direkt übernehmen können.&lt;br /&gt;
=== Eigenes Model für die fe_user erstellen ===&lt;br /&gt;
In der eigenen Extension zuerst ein &amp;#039;&amp;#039;&amp;#039;Model anlegen&amp;#039;&amp;#039;&amp;#039;. Normalerweise wird dazu Abstract Entity erweitert und alle Felder selbst anlegen. Wir sparen uns Arbeit und &amp;#039;&amp;#039;&amp;#039;erweitern&amp;#039;&amp;#039;&amp;#039; diesmal das bereits von Extbase angelegte Model, somit haben wir dessen Eigenschaften bereits (kann man schön in der extbase extension im Quelltext sehen.)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class RmaUser extends TYPO3\CMS\Extbase\Domain\Model\FrontendUser {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Um nur die Standardfelder der fe_users zu benutzen und die Daten zu holen, brauchen wir diese Datei nicht anzulegen Siehe Beispiel oben.&lt;br /&gt;
&lt;br /&gt;
=== Repository für die fe_user erstellen ===&lt;br /&gt;
Auch hier erweitern wir das bereits vorhandene Repository. Also statt \TYPO3\CMS\Extbase\Persistence\Repository zu erweitern. Nehmen wir:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class RmaUser extends TYPO3\CMS\Extbase\Domain\Model\FrontendUser {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mapping für die fe_user Standardfelder===&lt;br /&gt;
Wir haben in unserer Extension jetzt das Datenmodell und die Datenrepository also das Behältnis. Extbase weiß aber noch nicht welche Tabelle es nehmen soll, wenn eine Anfrage unserer Extension kommt. Deshalb mappen wir unser Model auf die Tabelle fe_user. Das erledigen wir mit TypoScript:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;typoscript&amp;quot;&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
    Geobit/Gbrma/Domain/Model/RmaUser  {&lt;br /&gt;
        mapping {&lt;br /&gt;
            tableName = fe_users&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Model für weitere Felder der fe_users erweitern ===&lt;br /&gt;
Jetzt können wir unser Model nutzen um alle Standard Felder zu nutzen. Jetzt müssen wir aber noch Zugriff auf Felder bekommen, die z.B. andere Extensions angelegt haben. Wir legen dazu die passenden Getter und Setter in unserem Model an. Im Beispiel gehen wir von einem Feld &amp;quot;comment&amp;quot; aus, das wir nutzen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class Tx_Testext1_Domain_Model_FrontendUser extends Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Comment&lt;br /&gt;
  *&lt;br /&gt;
  * @var string&lt;br /&gt;
  */&lt;br /&gt;
 protected $comment;&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Setter for comment&lt;br /&gt;
  *&lt;br /&gt;
  * @param string $comment&lt;br /&gt;
  * @return void&lt;br /&gt;
  */&lt;br /&gt;
 public function setComment ($comment) {&lt;br /&gt;
  $this-&amp;gt;comment = $comment;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Getter for comment&lt;br /&gt;
  *&lt;br /&gt;
  * @return string&lt;br /&gt;
  */&lt;br /&gt;
 public function getComment () {&lt;br /&gt;
  return $this-&amp;gt;comment;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Neues Model im Controller nutzen ===&lt;br /&gt;
Mittels Injection kann man das neue Model im Controller nutzen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var Tx_Testext1_Domain_Repository_FrontendUserRepository&lt;br /&gt;
 */&lt;br /&gt;
protected $userRepository;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Inject the user repository&lt;br /&gt;
 *&lt;br /&gt;
 * @param Tx_Testext1_Domain_Repository_FrontendUserRepository $userRepository&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function injectFrontendUserRepository (Tx_Testext1_Domain_Repository_FrontendUserRepository $userRepository) {&lt;br /&gt;
 $this-&amp;gt;userRepository = $userRepository;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Test action&lt;br /&gt;
 *&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function testAction () {&lt;br /&gt;
 $user = $this-&amp;gt;userRepository-&amp;gt;findByUid(1);&lt;br /&gt;
 t3lib_utility_Debug::debug($user);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Eigene Felder erweitern ===&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
== Fallstricke ==&lt;br /&gt;
=== SQL Exeption - falsche Tabelle ===&lt;br /&gt;
Hier liegt meist ein falsches Mapping vor. Je nachdem wie das UserModel erzeugt wurde muß man beim Mapping darauf achten das das Plugin Model nochmal auf die fe_users gemappt wird (und nicht das Extbase Model)&lt;br /&gt;
Bei ältern Typo3 Versionen wird das Mapping Setup nur in der ext_typoscript_setup.txt erkannt.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: http://wiki.zone30.info/wikizone/index.php/Extbase_-_Zugriff_auf_Tabellen_anderer_Extbase_Extensions#Tabelle_mappen&lt;br /&gt;
=== Extbase Model ab 6.0 ===&lt;br /&gt;
TYPO3\CMS\Extbase\Domain\Model\FrontendUser&lt;br /&gt;
&lt;br /&gt;
Im Seiten TS der Rootseite habe ich folgenden Eintrag:&lt;br /&gt;
TCAdefaults.fe_users.tx_extbase_type = TYPO3\CMS\Extbase\Domain\Model\FrontendUser&lt;br /&gt;
TCAdefaults.fe_groups.tx_extbase_type = TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup&lt;br /&gt;
&lt;br /&gt;
=== FE-User müssen einer Gruppe zugeordnet sein ===&lt;/div&gt;</summary>
		<author><name>87.165.0.123</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Extbase_-_Zugriff_auf_die_fe_user_Tabelle&amp;diff=21275</id>
		<title>Extbase - Zugriff auf die fe user Tabelle</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Extbase_-_Zugriff_auf_die_fe_user_Tabelle&amp;diff=21275"/>
		<updated>2015-10-23T18:23:33Z</updated>

		<summary type="html">&lt;p&gt;87.165.0.123: /* Beispiel: Erweiterte FE_User Felder in eigener Extension nutzen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://wiki.zone30.info/wikizone/index.php/Extbase_Extensions_-_Snippets_und_Glossar#Auf_Daten_andererer_Modelle_.2F_Repositorys_im_Controller_zugreifen._.28verkn.C3.BCpfte_Daten_auflisten.29&lt;br /&gt;
&lt;br /&gt;
http://www.derhansen.de/2012/06/zugriff-auf-frontend-user-tabelle-aus.html&lt;br /&gt;
&lt;br /&gt;
http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Wie kriege ich die Daten ===&lt;br /&gt;
Wir möchten die Daten der fe_users Tabelle, also die Frontenduser in unserer eigenen Extension verwenden. Extbase hat ein eigenes Domain Model und ein eigenes Repository vorbereitet um auf die Standard Felder der fe_users Tabelle zuzugreifen. Das bedeutet man kann die Daten einfach nutzen, wenn man sein eigenes Model erweitert. Ich brauche keine Getter und Setter Methoden etc. mehr. Zu definieren.&lt;br /&gt;
=== fe_users extended ===&lt;br /&gt;
Allerdings wird gerade die Tabelle fe_users oftmals von anderen Extensions um weitere Felder erweitert (z.B. sr_feuser_register). Diese Felder sind natürlich nicht im Model von extbase enthalten. Deshalb muß man sie nochmal separat behandeln. Man erweitert einfach sein eigenes Datenmodell um diese Felder. So funktioniert das ganze.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt möchten wir vielleicht auch noch die fe_users um eigene Felder erweitern.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
* Nicht verwechseln: &amp;#039;&amp;#039;$user=$GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user;&amp;#039;&amp;#039; gibt den aktuell angemeldeten User zurück. &lt;br /&gt;
* findAll() soll laut einem Forumseintrag nicht funktionieren. $user = $this-&amp;gt;userRepository-&amp;gt;findByUid($uid); schon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Zugriff auf fe_users Daten in eigener Extension  ==&lt;br /&gt;
Wenn man einfach nur ein paar Daten aus fe_users braucht, kann man das Standard Repository einfach injecten.&lt;br /&gt;
=== Übersicht ===&lt;br /&gt;
# fe_users-Repository per Dependency Injection zu Verfügung stellen&lt;br /&gt;
# Auslesen der Userdaten&lt;br /&gt;
# Mapping beachten&lt;br /&gt;
&lt;br /&gt;
=== fe_user Tabelle  Injecten ===&lt;br /&gt;
Im Controller deiner Extension&lt;br /&gt;
Ab 6.0&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
 * @inject&lt;br /&gt;
 */&lt;br /&gt;
protected $frontendUserRepository;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old School (&amp;lt;4.7)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var Tx_Extbase_Domain_Repository_FrontendUserRepository&lt;br /&gt;
 */&lt;br /&gt;
protected $userRepository;    &lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Inject the user repository&lt;br /&gt;
 *&lt;br /&gt;
 * @param Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function injectFrontendUserRepository(Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository) {&lt;br /&gt;
    $this-&amp;gt;userRepository = $userRepository;&lt;br /&gt;
}  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Userdaten holen ===&lt;br /&gt;
Z.B. im Controller:&lt;br /&gt;
 $user = $this-&amp;gt;userRepository-&amp;gt;findByUid($uid);&lt;br /&gt;
&lt;br /&gt;
=== Problem: User werden nicht ausgegeben weil record type nicht gesetzt ist ===&lt;br /&gt;
Hinweis: In neueren Versionen von Extbase ist das Mapping anders definiert -&amp;gt; nur bei alten Versionen wichtig (nicht verifiziert)&lt;br /&gt;
&lt;br /&gt;
Achtung: Extbase erweitert die fe_users und fe_groups um &amp;#039;&amp;#039;&amp;#039;das Feld tx_extbase_type (Record Type) Ist dies nicht vorhanden gibt es nichts zurück.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Im TypoScript definiert Extbase&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
 Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
  mapping.recordType = Tx_Extbase_Domain_Model_FrontendUser&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Im Mapping ist der recordType gesetzt d.h. es sucht nur fe_user mit dem recordType Tx_Extbase_Domain_Model_FrontendUser &lt;br /&gt;
&lt;br /&gt;
Lösung:&lt;br /&gt;
* Recordtype setzen&lt;br /&gt;
* oder Mapping löschen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
 Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
  mapping.recordType &amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* zusätzlich evtl. Recordtype automatisch vorbelegen -&amp;gt; im PageTS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TCAdefaults.fe_users.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUser&lt;br /&gt;
TCAdefaults.fe_groups.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUserGroup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: FE User in eigener Extension speichern ==&lt;br /&gt;
Am Beispiel der Extension gbrma. Der aktuell angemeldete User soll im Feld rma_user gespeichert werden. Dieses gehört zum Model &amp;#039;Rma&amp;#039;&lt;br /&gt;
=== Vorgehen ===&lt;br /&gt;
* Feld in ext_tables.sql anlegen -&amp;gt; Datenbank&lt;br /&gt;
* Feld in TCA anlegen -&amp;gt; Backend&lt;br /&gt;
* Feld in Model anlegen und Controller bearbeiten:&lt;br /&gt;
** mit Getter und Setter ergänzen-&amp;gt; Extbase Handling &lt;br /&gt;
** aktuell angemeldeter User abfragen&lt;br /&gt;
** User speichern (in create Action)&lt;br /&gt;
* Templates anpassen (wird hier nicht gezeigt)&lt;br /&gt;
=== ext_tables.sql ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
rma_user int(11) unsigned DEFAULT &amp;#039;0&amp;#039; NOT NULL,&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TCA ===&lt;br /&gt;
Configuration/TCA/Rma.php&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
		&amp;#039;rma_user&amp;#039; =&amp;gt; array(&lt;br /&gt;
			&amp;#039;exclude&amp;#039; =&amp;gt; 1,&lt;br /&gt;
			&amp;#039;label&amp;#039; =&amp;gt; &amp;#039;LLL:EXT:gbrma/Resources/Private/Language/locallang_db.xlf:tx_gbrma_domain_model_rna.rma_user&amp;#039;,&lt;br /&gt;
			&amp;#039;config&amp;#039; =&amp;gt; array(&lt;br /&gt;
				&amp;#039;type&amp;#039; =&amp;gt; &amp;#039;select&amp;#039;,&lt;br /&gt;
				&amp;#039;items&amp;#039; =&amp;gt; array (&lt;br /&gt;
					array(&amp;#039;&amp;#039;,0),&lt;br /&gt;
				),&lt;br /&gt;
				&amp;#039;foreign_table&amp;#039; =&amp;gt; &amp;#039;fe_users&amp;#039;,&lt;br /&gt;
				&amp;#039;foreign_class&amp;#039; =&amp;gt; &amp;#039;\TYPO3\CMS\Extbase\Domain\Model\FrontendUser&amp;#039;,&lt;br /&gt;
				&amp;#039;minitems&amp;#039; =&amp;gt; 0,&lt;br /&gt;
				&amp;#039;maxitems&amp;#039; =&amp;gt; 1,&lt;br /&gt;
				&amp;#039;size&amp;#039; =&amp;gt; 1,&lt;br /&gt;
				&amp;#039;appearance&amp;#039; =&amp;gt; array(&lt;br /&gt;
					&amp;#039;collapseAll&amp;#039; =&amp;gt; 0,&lt;br /&gt;
					&amp;#039;levelLinksPosition&amp;#039; =&amp;gt; &amp;#039;top&amp;#039;,&lt;br /&gt;
					&amp;#039;showSynchronizationLink&amp;#039; =&amp;gt; 1,&lt;br /&gt;
					&amp;#039;showPossibleLocalizationRecords&amp;#039; =&amp;gt; 1,&lt;br /&gt;
					&amp;#039;showAllLocalizationLink&amp;#039; =&amp;gt; 1&lt;br /&gt;
				),&lt;br /&gt;
			),&lt;br /&gt;
		),&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Model ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geobit\Gbrma\Domain\Model Rma.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	 * rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var integer&lt;br /&gt;
	 */&lt;br /&gt;
	protected $rmaUser = 0;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	 * Returns the rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return integer $rmaUser&lt;br /&gt;
	 */&lt;br /&gt;
	public function getRmaUser() {&lt;br /&gt;
		return $this-&amp;gt;rmaUser;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Sets the rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param integer $rmaUser&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	public function setRmaUser($rmaUser) {&lt;br /&gt;
		$this-&amp;gt;rmaUser = $rmaUser;&lt;br /&gt;
	}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
FrontendUser Repository bereitstellen (wir erweitern das von Extbase vorbereitete FrontendUser Repository, damit stehen uns dessen Objekte zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geobit\Gbrma\Controller RmaController.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	* FrontendUser Repository&lt;br /&gt;
	*&lt;br /&gt;
	* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	* @inject&lt;br /&gt;
	*/&lt;br /&gt;
	protected $userRepository;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Testen ob die fe_user jetzt zur Verfügung stehen kann man das z.B. in der List Action:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
		$user = $this-&amp;gt;userRepository-&amp;gt;findByUid(1);&lt;br /&gt;
		print \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( $user );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Achtung: findAll() geht nicht !&lt;br /&gt;
&lt;br /&gt;
Jetzt wollen beim anlegen eines Datensatzes den aktuell angemeldeten User hinterlegen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch in der Listenansicht möchten wir nur die Datensätze des aktuellen Users anzeige.&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Zugriff auf fe_users Daten über ID ==&lt;br /&gt;
Wir möchten in unserer Extension in einem Feld die ID eines Users speichern und später auf die Daten des Users zugreifen.&lt;br /&gt;
Um die Daten eines Users zu nutzen müssen wir:&lt;br /&gt;
&lt;br /&gt;
Einfach das bereits in der Extbase Extension vorhandene Repository in unseren Controller injecten&lt;br /&gt;
&lt;br /&gt;
Controller&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	* FrontendUser Repository&lt;br /&gt;
	*&lt;br /&gt;
	* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	* @inject&lt;br /&gt;
	*/&lt;br /&gt;
	protected $userRepository;&lt;br /&gt;
&lt;br /&gt;
        //... Zugriff z.B. um das Userobjekt des aktuellen Users zu holen&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get current user obj&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	 */&lt;br /&gt;
	private function getCurrentUser() {&lt;br /&gt;
		if ($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user[&amp;#039;uid&amp;#039;] &amp;gt; 0) {&lt;br /&gt;
			$userId = $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user[&amp;#039;uid&amp;#039;];&lt;br /&gt;
			$this-&amp;gt;currentUser = $this-&amp;gt;userRepository-&amp;gt;findByUid($userId);&lt;br /&gt;
			return $this-&amp;gt;currentUser; &lt;br /&gt;
		}else return false;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Erweitern der fe_user um eigene Felder ==&lt;br /&gt;
FE-users um eigene Felder erweitern (http://t3-developer.com/extbase-fluid/cheats-extbase/model/verwendung-der-fe-users-in-extbase/ 2015-06)&lt;br /&gt;
&lt;br /&gt;
Soll die Tabelle FE-Users um eigene Felder erweitert werden, sind folgende Dateien anzupassen:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/extension_tables.sql&amp;#039;&amp;#039;&amp;#039; -&amp;gt; SQL Anweisung um die Tabellle FE-Users in der Datenbank um eigene Felder zu ergänzen&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/extension_tables.php&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Neue Felder im Backend verfügbar machen&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/Configuration/TypoScript/setup.txt&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Mapping der eigenen Tabellenfelder für Extbase&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/Classes/Domain/Model/MeinFeUserModel.php&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Objekte initialisieren und Setter/Getter setzen&lt;br /&gt;
&lt;br /&gt;
In den nachfolgenden Beispiellistings wird die fe-users Tabelle um ein Textfeld &amp;quot;Meinfeld&amp;quot; ergänzt.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datei: MeineExtension/extension_tables.sql&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE fe_users {&lt;br /&gt;
    mein_feld varchar(255) DEFAULT &amp;#039;&amp;#039; NOT NULL,&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datei: MeineExtension/ext_tables.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
//**************************************************//&lt;br /&gt;
// USER | Erweiterung fe_users um Feld MeinFeld&lt;br /&gt;
//**************************************************//&lt;br /&gt;
t3lib_div::loadTCA(&amp;#039;fe_users&amp;#039;);&lt;br /&gt;
$addColumnArray = array(&lt;br /&gt;
    &amp;#039;mein_feld&amp;#039; =&amp;gt; array(&lt;br /&gt;
        &amp;#039;exclude&amp;#039; =&amp;gt; 0,&lt;br /&gt;
        &amp;#039;label&amp;#039; =&amp;gt; &amp;#039;Feldbeschriftung:&amp;#039;,&lt;br /&gt;
        &amp;#039;config&amp;#039; =&amp;gt; array(&lt;br /&gt;
        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;input&amp;#039;,&lt;br /&gt;
        &amp;#039;size&amp;#039; =&amp;gt; 20,&lt;br /&gt;
        &amp;#039;eval&amp;#039; =&amp;gt; &amp;#039;trim&amp;#039;,&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
);&lt;br /&gt;
t3lib_extMgm::addTCAcolumns(&amp;#039;fe_users&amp;#039;, $addColumnArray);&lt;br /&gt;
t3lib_extMgm::addToAllTCAtypes(&amp;#039;fe_users&amp;#039;, &amp;#039;--div--;NeuerReiter , mein_feld&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Erweiterte FE_User Felder in eigener Extension nutzen ==&lt;br /&gt;
Siehe auch http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html (2015-06) dort wird noch die alte Schreibweise statt der Namespace Schreibweise genutzt.&lt;br /&gt;
&lt;br /&gt;
Wenn wir von anderen Extension erweiterte Felder aus fe_users nutzen, oder Felder selbst erweitern wollen, können wir nciht wie oben vorgehen und direkt in den Controller injecten. Wir müssen wir für unsere User in unserer Extension ein &amp;#039;&amp;#039;&amp;#039;eigenes Model&amp;#039;&amp;#039;&amp;#039; und ein &amp;#039;&amp;#039;&amp;#039;eigenes Repository&amp;#039;&amp;#039;&amp;#039; einbauen. Und &amp;#039;&amp;#039;&amp;#039;dieses injecten&amp;#039;&amp;#039;&amp;#039;. Zum Glück ist in Extbase für fe_users einiges bereitgestellt, das wir durch erweitern direkt übernehmen können.&lt;br /&gt;
=== Eigenes Model für die fe_user ===&lt;br /&gt;
In der eigenen Extension zuerst ein &amp;#039;&amp;#039;&amp;#039;Model anlegen&amp;#039;&amp;#039;&amp;#039;. Normalerweise wird dazu Abstract Entity erweitert und alle Felder selbst anlegen. Wir sparen uns Arbeit und &amp;#039;&amp;#039;&amp;#039;erweitern&amp;#039;&amp;#039;&amp;#039; diesmal das bereits von Extbase angelegte Model, somit haben wir dessen Eigenschaften bereits (kann man schön in der extbase extension im Quelltext sehen.)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class RmaUser extends TYPO3\CMS\Extbase\Domain\Model\FrontendUser {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Um nur die Standardfelder der fe_users zu benutzen und die Daten zu holen, brauchen wir diese Datei nicht anzulegen Siehe Beispiel oben.&lt;br /&gt;
&lt;br /&gt;
=== Repository für die fe_user ===&lt;br /&gt;
Auch hier erweitern wir das bereits vorhandene Repository. Also statt \TYPO3\CMS\Extbase\Persistence\Repository zu erweitern. Nehmen wir:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class RmaUser extends TYPO3\CMS\Extbase\Domain\Model\FrontendUser {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mapping für die fe_user ===&lt;br /&gt;
Wir haben in unserer Extension jetzt das Datenmodell und die Datenrepository also das Behältnis. Extbase weiß aber noch nicht welche Tabelle es nehmen soll, wenn eine Anfrage unserer Extension kommt. Deshalb mappen wir unser Model auf die Tabelle fe_user. Das erledigen wir mit TypoScript:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;typoscript&amp;quot;&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
    Geobit/Gbrma/Domain/Model/RmaUser  {&lt;br /&gt;
        mapping {&lt;br /&gt;
            tableName = fe_users&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte Felder der fe_users nutzen ===&lt;br /&gt;
Jetzt können wir unser Model nutzen um alle Standard Felder zu nutzen. Jetzt müssen wir aber noch Zugriff auf Felder bekommen, die z.B. andere Extensions angelegt haben. Wir legen dazu die passenden Getter und Setter in unserem Model an. Im Beispiel gehen wir von einem Feld &amp;quot;comment&amp;quot; aus, das wir nutzen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class Tx_Testext1_Domain_Model_FrontendUser extends Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Comment&lt;br /&gt;
  *&lt;br /&gt;
  * @var string&lt;br /&gt;
  */&lt;br /&gt;
 protected $comment;&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Setter for comment&lt;br /&gt;
  *&lt;br /&gt;
  * @param string $comment&lt;br /&gt;
  * @return void&lt;br /&gt;
  */&lt;br /&gt;
 public function setComment ($comment) {&lt;br /&gt;
  $this-&amp;gt;comment = $comment;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Getter for comment&lt;br /&gt;
  *&lt;br /&gt;
  * @return string&lt;br /&gt;
  */&lt;br /&gt;
 public function getComment () {&lt;br /&gt;
  return $this-&amp;gt;comment;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Eigene Felder erweitern ===&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
== Fallstricke ==&lt;br /&gt;
=== SQL Exeption - falsche Tabelle ===&lt;br /&gt;
Hier liegt meist ein falsches Mapping vor. Je nachdem wie das UserModel erzeugt wurde muß man beim Mapping darauf achten das das Plugin Model nochmal auf die fe_users gemappt wird (und nicht das Extbase Model)&lt;br /&gt;
Bei ältern Typo3 Versionen wird das Mapping Setup nur in der ext_typoscript_setup.txt erkannt.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: http://wiki.zone30.info/wikizone/index.php/Extbase_-_Zugriff_auf_Tabellen_anderer_Extbase_Extensions#Tabelle_mappen&lt;br /&gt;
=== Extbase Model ab 6.0 ===&lt;br /&gt;
TYPO3\CMS\Extbase\Domain\Model\FrontendUser&lt;br /&gt;
&lt;br /&gt;
Im Seiten TS der Rootseite habe ich folgenden Eintrag:&lt;br /&gt;
TCAdefaults.fe_users.tx_extbase_type = TYPO3\CMS\Extbase\Domain\Model\FrontendUser&lt;br /&gt;
TCAdefaults.fe_groups.tx_extbase_type = TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup&lt;br /&gt;
&lt;br /&gt;
=== FE-User müssen einer Gruppe zugeordnet sein ===&lt;/div&gt;</summary>
		<author><name>87.165.0.123</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Extbase_-_Zugriff_auf_die_fe_user_Tabelle&amp;diff=21274</id>
		<title>Extbase - Zugriff auf die fe user Tabelle</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Extbase_-_Zugriff_auf_die_fe_user_Tabelle&amp;diff=21274"/>
		<updated>2015-10-23T18:22:46Z</updated>

		<summary type="html">&lt;p&gt;87.165.0.123: /* Beispiel: Erweiterte FE_User Felder in eigener Extension nutzen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://wiki.zone30.info/wikizone/index.php/Extbase_Extensions_-_Snippets_und_Glossar#Auf_Daten_andererer_Modelle_.2F_Repositorys_im_Controller_zugreifen._.28verkn.C3.BCpfte_Daten_auflisten.29&lt;br /&gt;
&lt;br /&gt;
http://www.derhansen.de/2012/06/zugriff-auf-frontend-user-tabelle-aus.html&lt;br /&gt;
&lt;br /&gt;
http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Wie kriege ich die Daten ===&lt;br /&gt;
Wir möchten die Daten der fe_users Tabelle, also die Frontenduser in unserer eigenen Extension verwenden. Extbase hat ein eigenes Domain Model und ein eigenes Repository vorbereitet um auf die Standard Felder der fe_users Tabelle zuzugreifen. Das bedeutet man kann die Daten einfach nutzen, wenn man sein eigenes Model erweitert. Ich brauche keine Getter und Setter Methoden etc. mehr. Zu definieren.&lt;br /&gt;
=== fe_users extended ===&lt;br /&gt;
Allerdings wird gerade die Tabelle fe_users oftmals von anderen Extensions um weitere Felder erweitert (z.B. sr_feuser_register). Diese Felder sind natürlich nicht im Model von extbase enthalten. Deshalb muß man sie nochmal separat behandeln. Man erweitert einfach sein eigenes Datenmodell um diese Felder. So funktioniert das ganze.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt möchten wir vielleicht auch noch die fe_users um eigene Felder erweitern.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
* Nicht verwechseln: &amp;#039;&amp;#039;$user=$GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user;&amp;#039;&amp;#039; gibt den aktuell angemeldeten User zurück. &lt;br /&gt;
* findAll() soll laut einem Forumseintrag nicht funktionieren. $user = $this-&amp;gt;userRepository-&amp;gt;findByUid($uid); schon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Zugriff auf fe_users Daten in eigener Extension  ==&lt;br /&gt;
Wenn man einfach nur ein paar Daten aus fe_users braucht, kann man das Standard Repository einfach injecten.&lt;br /&gt;
=== Übersicht ===&lt;br /&gt;
# fe_users-Repository per Dependency Injection zu Verfügung stellen&lt;br /&gt;
# Auslesen der Userdaten&lt;br /&gt;
# Mapping beachten&lt;br /&gt;
&lt;br /&gt;
=== fe_user Tabelle  Injecten ===&lt;br /&gt;
Im Controller deiner Extension&lt;br /&gt;
Ab 6.0&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
 * @inject&lt;br /&gt;
 */&lt;br /&gt;
protected $frontendUserRepository;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old School (&amp;lt;4.7)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var Tx_Extbase_Domain_Repository_FrontendUserRepository&lt;br /&gt;
 */&lt;br /&gt;
protected $userRepository;    &lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Inject the user repository&lt;br /&gt;
 *&lt;br /&gt;
 * @param Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function injectFrontendUserRepository(Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository) {&lt;br /&gt;
    $this-&amp;gt;userRepository = $userRepository;&lt;br /&gt;
}  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Userdaten holen ===&lt;br /&gt;
Z.B. im Controller:&lt;br /&gt;
 $user = $this-&amp;gt;userRepository-&amp;gt;findByUid($uid);&lt;br /&gt;
&lt;br /&gt;
=== Problem: User werden nicht ausgegeben weil record type nicht gesetzt ist ===&lt;br /&gt;
Hinweis: In neueren Versionen von Extbase ist das Mapping anders definiert -&amp;gt; nur bei alten Versionen wichtig (nicht verifiziert)&lt;br /&gt;
&lt;br /&gt;
Achtung: Extbase erweitert die fe_users und fe_groups um &amp;#039;&amp;#039;&amp;#039;das Feld tx_extbase_type (Record Type) Ist dies nicht vorhanden gibt es nichts zurück.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Im TypoScript definiert Extbase&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
 Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
  mapping.recordType = Tx_Extbase_Domain_Model_FrontendUser&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Im Mapping ist der recordType gesetzt d.h. es sucht nur fe_user mit dem recordType Tx_Extbase_Domain_Model_FrontendUser &lt;br /&gt;
&lt;br /&gt;
Lösung:&lt;br /&gt;
* Recordtype setzen&lt;br /&gt;
* oder Mapping löschen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
 Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
  mapping.recordType &amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* zusätzlich evtl. Recordtype automatisch vorbelegen -&amp;gt; im PageTS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TCAdefaults.fe_users.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUser&lt;br /&gt;
TCAdefaults.fe_groups.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUserGroup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: FE User in eigener Extension speichern ==&lt;br /&gt;
Am Beispiel der Extension gbrma. Der aktuell angemeldete User soll im Feld rma_user gespeichert werden. Dieses gehört zum Model &amp;#039;Rma&amp;#039;&lt;br /&gt;
=== Vorgehen ===&lt;br /&gt;
* Feld in ext_tables.sql anlegen -&amp;gt; Datenbank&lt;br /&gt;
* Feld in TCA anlegen -&amp;gt; Backend&lt;br /&gt;
* Feld in Model anlegen und Controller bearbeiten:&lt;br /&gt;
** mit Getter und Setter ergänzen-&amp;gt; Extbase Handling &lt;br /&gt;
** aktuell angemeldeter User abfragen&lt;br /&gt;
** User speichern (in create Action)&lt;br /&gt;
* Templates anpassen (wird hier nicht gezeigt)&lt;br /&gt;
=== ext_tables.sql ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
rma_user int(11) unsigned DEFAULT &amp;#039;0&amp;#039; NOT NULL,&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TCA ===&lt;br /&gt;
Configuration/TCA/Rma.php&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
		&amp;#039;rma_user&amp;#039; =&amp;gt; array(&lt;br /&gt;
			&amp;#039;exclude&amp;#039; =&amp;gt; 1,&lt;br /&gt;
			&amp;#039;label&amp;#039; =&amp;gt; &amp;#039;LLL:EXT:gbrma/Resources/Private/Language/locallang_db.xlf:tx_gbrma_domain_model_rna.rma_user&amp;#039;,&lt;br /&gt;
			&amp;#039;config&amp;#039; =&amp;gt; array(&lt;br /&gt;
				&amp;#039;type&amp;#039; =&amp;gt; &amp;#039;select&amp;#039;,&lt;br /&gt;
				&amp;#039;items&amp;#039; =&amp;gt; array (&lt;br /&gt;
					array(&amp;#039;&amp;#039;,0),&lt;br /&gt;
				),&lt;br /&gt;
				&amp;#039;foreign_table&amp;#039; =&amp;gt; &amp;#039;fe_users&amp;#039;,&lt;br /&gt;
				&amp;#039;foreign_class&amp;#039; =&amp;gt; &amp;#039;\TYPO3\CMS\Extbase\Domain\Model\FrontendUser&amp;#039;,&lt;br /&gt;
				&amp;#039;minitems&amp;#039; =&amp;gt; 0,&lt;br /&gt;
				&amp;#039;maxitems&amp;#039; =&amp;gt; 1,&lt;br /&gt;
				&amp;#039;size&amp;#039; =&amp;gt; 1,&lt;br /&gt;
				&amp;#039;appearance&amp;#039; =&amp;gt; array(&lt;br /&gt;
					&amp;#039;collapseAll&amp;#039; =&amp;gt; 0,&lt;br /&gt;
					&amp;#039;levelLinksPosition&amp;#039; =&amp;gt; &amp;#039;top&amp;#039;,&lt;br /&gt;
					&amp;#039;showSynchronizationLink&amp;#039; =&amp;gt; 1,&lt;br /&gt;
					&amp;#039;showPossibleLocalizationRecords&amp;#039; =&amp;gt; 1,&lt;br /&gt;
					&amp;#039;showAllLocalizationLink&amp;#039; =&amp;gt; 1&lt;br /&gt;
				),&lt;br /&gt;
			),&lt;br /&gt;
		),&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Model ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geobit\Gbrma\Domain\Model Rma.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	 * rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var integer&lt;br /&gt;
	 */&lt;br /&gt;
	protected $rmaUser = 0;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	 * Returns the rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return integer $rmaUser&lt;br /&gt;
	 */&lt;br /&gt;
	public function getRmaUser() {&lt;br /&gt;
		return $this-&amp;gt;rmaUser;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Sets the rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param integer $rmaUser&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	public function setRmaUser($rmaUser) {&lt;br /&gt;
		$this-&amp;gt;rmaUser = $rmaUser;&lt;br /&gt;
	}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
FrontendUser Repository bereitstellen (wir erweitern das von Extbase vorbereitete FrontendUser Repository, damit stehen uns dessen Objekte zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geobit\Gbrma\Controller RmaController.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	* FrontendUser Repository&lt;br /&gt;
	*&lt;br /&gt;
	* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	* @inject&lt;br /&gt;
	*/&lt;br /&gt;
	protected $userRepository;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Testen ob die fe_user jetzt zur Verfügung stehen kann man das z.B. in der List Action:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
		$user = $this-&amp;gt;userRepository-&amp;gt;findByUid(1);&lt;br /&gt;
		print \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( $user );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Achtung: findAll() geht nicht !&lt;br /&gt;
&lt;br /&gt;
Jetzt wollen beim anlegen eines Datensatzes den aktuell angemeldeten User hinterlegen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch in der Listenansicht möchten wir nur die Datensätze des aktuellen Users anzeige.&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Zugriff auf fe_users Daten über ID ==&lt;br /&gt;
Wir möchten in unserer Extension in einem Feld die ID eines Users speichern und später auf die Daten des Users zugreifen.&lt;br /&gt;
Um die Daten eines Users zu nutzen müssen wir:&lt;br /&gt;
&lt;br /&gt;
Einfach das bereits in der Extbase Extension vorhandene Repository in unseren Controller injecten&lt;br /&gt;
&lt;br /&gt;
Controller&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	* FrontendUser Repository&lt;br /&gt;
	*&lt;br /&gt;
	* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	* @inject&lt;br /&gt;
	*/&lt;br /&gt;
	protected $userRepository;&lt;br /&gt;
&lt;br /&gt;
        //... Zugriff z.B. um das Userobjekt des aktuellen Users zu holen&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get current user obj&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	 */&lt;br /&gt;
	private function getCurrentUser() {&lt;br /&gt;
		if ($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user[&amp;#039;uid&amp;#039;] &amp;gt; 0) {&lt;br /&gt;
			$userId = $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user[&amp;#039;uid&amp;#039;];&lt;br /&gt;
			$this-&amp;gt;currentUser = $this-&amp;gt;userRepository-&amp;gt;findByUid($userId);&lt;br /&gt;
			return $this-&amp;gt;currentUser; &lt;br /&gt;
		}else return false;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Erweitern der fe_user um eigene Felder ==&lt;br /&gt;
FE-users um eigene Felder erweitern (http://t3-developer.com/extbase-fluid/cheats-extbase/model/verwendung-der-fe-users-in-extbase/ 2015-06)&lt;br /&gt;
&lt;br /&gt;
Soll die Tabelle FE-Users um eigene Felder erweitert werden, sind folgende Dateien anzupassen:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/extension_tables.sql&amp;#039;&amp;#039;&amp;#039; -&amp;gt; SQL Anweisung um die Tabellle FE-Users in der Datenbank um eigene Felder zu ergänzen&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/extension_tables.php&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Neue Felder im Backend verfügbar machen&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/Configuration/TypoScript/setup.txt&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Mapping der eigenen Tabellenfelder für Extbase&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/Classes/Domain/Model/MeinFeUserModel.php&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Objekte initialisieren und Setter/Getter setzen&lt;br /&gt;
&lt;br /&gt;
In den nachfolgenden Beispiellistings wird die fe-users Tabelle um ein Textfeld &amp;quot;Meinfeld&amp;quot; ergänzt.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datei: MeineExtension/extension_tables.sql&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE fe_users {&lt;br /&gt;
    mein_feld varchar(255) DEFAULT &amp;#039;&amp;#039; NOT NULL,&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datei: MeineExtension/ext_tables.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
//**************************************************//&lt;br /&gt;
// USER | Erweiterung fe_users um Feld MeinFeld&lt;br /&gt;
//**************************************************//&lt;br /&gt;
t3lib_div::loadTCA(&amp;#039;fe_users&amp;#039;);&lt;br /&gt;
$addColumnArray = array(&lt;br /&gt;
    &amp;#039;mein_feld&amp;#039; =&amp;gt; array(&lt;br /&gt;
        &amp;#039;exclude&amp;#039; =&amp;gt; 0,&lt;br /&gt;
        &amp;#039;label&amp;#039; =&amp;gt; &amp;#039;Feldbeschriftung:&amp;#039;,&lt;br /&gt;
        &amp;#039;config&amp;#039; =&amp;gt; array(&lt;br /&gt;
        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;input&amp;#039;,&lt;br /&gt;
        &amp;#039;size&amp;#039; =&amp;gt; 20,&lt;br /&gt;
        &amp;#039;eval&amp;#039; =&amp;gt; &amp;#039;trim&amp;#039;,&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
);&lt;br /&gt;
t3lib_extMgm::addTCAcolumns(&amp;#039;fe_users&amp;#039;, $addColumnArray);&lt;br /&gt;
t3lib_extMgm::addToAllTCAtypes(&amp;#039;fe_users&amp;#039;, &amp;#039;--div--;NeuerReiter , mein_feld&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Erweiterte FE_User Felder in eigener Extension nutzen ==&lt;br /&gt;
Siehe auch http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html (2015-06) dort wird noch die alte Schreibweise statt der Namespace Schreibweise genutzt.&lt;br /&gt;
&lt;br /&gt;
Wenn wir von anderen Extension erweiterte Felder aus fe_users nutzen, oder Felder selbst erweitern wollen, können wir nciht wie oben vorgehen und direkt in den Controller injecten. Wir müssen wir für unsere User in unserer Extension ein &amp;#039;&amp;#039;&amp;#039;eigenes Model&amp;#039;&amp;#039;&amp;#039; und ein &amp;#039;&amp;#039;&amp;#039;eigenes Repository&amp;#039;&amp;#039;&amp;#039; einbauen. Und &amp;#039;&amp;#039;&amp;#039;dieses injecten&amp;#039;&amp;#039;&amp;#039;. Zum Glück ist in Extbase für fe_users einiges bereitgestellt, das wir durch erweitern direkt übernehmen können.&lt;br /&gt;
=== Eigenes Model für die fe_user ===&lt;br /&gt;
In der eigenen Extension zuerst ein &amp;#039;&amp;#039;&amp;#039;Model anlegen&amp;#039;&amp;#039;&amp;#039;. Normalerweise wird dazu Abstract Entity erweitert und alle Felder selbst anlegen. Wir sparen uns Arbeit und &amp;#039;&amp;#039;&amp;#039;erweitern&amp;#039;&amp;#039;&amp;#039; diesmal das bereits von Extbase angelegte Model, somit haben wir dessen Eigenschaften bereits (kann man schön in der extbase extension im Quelltext sehen.)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class RmaUser extends TYPO3\CMS\Extbase\Domain\Model\FrontendUser {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Um nur die Standardfelder der fe_users zu benutzen und die Daten zu holen, brauchen wir diese Datei nicht anzulegen Siehe Beispiel oben.&lt;br /&gt;
&lt;br /&gt;
=== Repository für die fe_user ===&lt;br /&gt;
Auch hier erweitern wir das bereits vorhandene Repository. Also statt \TYPO3\CMS\Extbase\Persistence\Repository zu erweitern. Nehmen wir:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class RmaUser extends TYPO3\CMS\Extbase\Domain\Model\FrontendUser {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mapping für die fe_user ===&lt;br /&gt;
Wir haben in unserer Extension jetzt das Datenmodell und die Datenrepository also das Behältnis. Extbase weiß aber noch nicht welche Tabelle es nehmen soll, wenn eine Anfrage unserer Extension kommt. Deshalb mappen wir unser Model auf die Tabelle fe_user. Das erledigen wir mit TypoScript:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;typoscript&amp;quot;&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
    Geobit/Gbrma/Domain/Model/RmaUser  {&lt;br /&gt;
        mapping {&lt;br /&gt;
            tableName = fe_users&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Erweiterte Felder der fe_users nutzen ===&lt;br /&gt;
Jetzt können wir unser Model nutzen um alle Standard Felder zu nutzen. Jetzt müssen wir aber noch Zugriff auf Felder bekommen, die z.B. andere Extensions angelegt haben. Wir legen dazu die passenden Getter und Setter in unserem Model an. Im Beispiel gehen wir von einem Feld &amp;quot;comment&amp;quot; aus, das wir nutzen wollen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class Tx_Testext1_Domain_Model_FrontendUser extends Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Comment&lt;br /&gt;
  *&lt;br /&gt;
  * @var string&lt;br /&gt;
  */&lt;br /&gt;
 protected $comment;&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Setter for comment&lt;br /&gt;
  *&lt;br /&gt;
  * @param string $comment&lt;br /&gt;
  * @return void&lt;br /&gt;
  */&lt;br /&gt;
 public function setComment ($comment) {&lt;br /&gt;
  $this-&amp;gt;comment = $comment;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 /**&lt;br /&gt;
  * Getter for comment&lt;br /&gt;
  *&lt;br /&gt;
  * @return string&lt;br /&gt;
  */&lt;br /&gt;
 public function getComment () {&lt;br /&gt;
  return $this-&amp;gt;comment;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Eigene Felder erweitern ===&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
== Fallstricke ==&lt;br /&gt;
=== SQL Exeption - falsche Tabelle ===&lt;br /&gt;
Hier liegt meist ein falsches Mapping vor. Je nachdem wie das UserModel erzeugt wurde muß man beim Mapping darauf achten das das Plugin Model nochmal auf die fe_users gemappt wird (und nicht das Extbase Model)&lt;br /&gt;
Bei ältern Typo3 Versionen wird das Mapping Setup nur in der ext_typoscript_setup.txt erkannt.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: http://wiki.zone30.info/wikizone/index.php/Extbase_-_Zugriff_auf_Tabellen_anderer_Extbase_Extensions#Tabelle_mappen&lt;br /&gt;
=== Extbase Model ab 6.0 ===&lt;br /&gt;
TYPO3\CMS\Extbase\Domain\Model\FrontendUser&lt;br /&gt;
&lt;br /&gt;
Im Seiten TS der Rootseite habe ich folgenden Eintrag:&lt;br /&gt;
TCAdefaults.fe_users.tx_extbase_type = TYPO3\CMS\Extbase\Domain\Model\FrontendUser&lt;br /&gt;
TCAdefaults.fe_groups.tx_extbase_type = TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup&lt;br /&gt;
&lt;br /&gt;
=== FE-User müssen einer Gruppe zugeordnet sein ===&lt;/div&gt;</summary>
		<author><name>87.165.0.123</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Extbase_-_Zugriff_auf_die_fe_user_Tabelle&amp;diff=21273</id>
		<title>Extbase - Zugriff auf die fe user Tabelle</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Extbase_-_Zugriff_auf_die_fe_user_Tabelle&amp;diff=21273"/>
		<updated>2015-10-23T18:17:54Z</updated>

		<summary type="html">&lt;p&gt;87.165.0.123: /* Beispiel: FE User durch erweitern von Extbase in eigener Extension nutzen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;http://wiki.zone30.info/wikizone/index.php/Extbase_Extensions_-_Snippets_und_Glossar#Auf_Daten_andererer_Modelle_.2F_Repositorys_im_Controller_zugreifen._.28verkn.C3.BCpfte_Daten_auflisten.29&lt;br /&gt;
&lt;br /&gt;
http://www.derhansen.de/2012/06/zugriff-auf-frontend-user-tabelle-aus.html&lt;br /&gt;
&lt;br /&gt;
http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
=== Wie kriege ich die Daten ===&lt;br /&gt;
Wir möchten die Daten der fe_users Tabelle, also die Frontenduser in unserer eigenen Extension verwenden. Extbase hat ein eigenes Domain Model und ein eigenes Repository vorbereitet um auf die Standard Felder der fe_users Tabelle zuzugreifen. Das bedeutet man kann die Daten einfach nutzen, wenn man sein eigenes Model erweitert. Ich brauche keine Getter und Setter Methoden etc. mehr. Zu definieren.&lt;br /&gt;
=== fe_users extended ===&lt;br /&gt;
Allerdings wird gerade die Tabelle fe_users oftmals von anderen Extensions um weitere Felder erweitert (z.B. sr_feuser_register). Diese Felder sind natürlich nicht im Model von extbase enthalten. Deshalb muß man sie nochmal separat behandeln. Man erweitert einfach sein eigenes Datenmodell um diese Felder. So funktioniert das ganze.&lt;br /&gt;
&lt;br /&gt;
Zu guter letzt möchten wir vielleicht auch noch die fe_users um eigene Felder erweitern.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise ===&lt;br /&gt;
* Nicht verwechseln: &amp;#039;&amp;#039;$user=$GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user;&amp;#039;&amp;#039; gibt den aktuell angemeldeten User zurück. &lt;br /&gt;
* findAll() soll laut einem Forumseintrag nicht funktionieren. $user = $this-&amp;gt;userRepository-&amp;gt;findByUid($uid); schon.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Zugriff auf fe_users Daten in eigener Extension  ==&lt;br /&gt;
Wenn man einfach nur ein paar Daten aus fe_users braucht, kann man das Standard Repository einfach injecten.&lt;br /&gt;
=== Übersicht ===&lt;br /&gt;
# fe_users-Repository per Dependency Injection zu Verfügung stellen&lt;br /&gt;
# Auslesen der Userdaten&lt;br /&gt;
# Mapping beachten&lt;br /&gt;
&lt;br /&gt;
=== fe_user Tabelle  Injecten ===&lt;br /&gt;
Im Controller deiner Extension&lt;br /&gt;
Ab 6.0&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
 * @inject&lt;br /&gt;
 */&lt;br /&gt;
protected $frontendUserRepository;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Old School (&amp;lt;4.7)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var Tx_Extbase_Domain_Repository_FrontendUserRepository&lt;br /&gt;
 */&lt;br /&gt;
protected $userRepository;    &lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Inject the user repository&lt;br /&gt;
 *&lt;br /&gt;
 * @param Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function injectFrontendUserRepository(Tx_Extbase_Domain_Repository_FrontendUserRepository $userRepository) {&lt;br /&gt;
    $this-&amp;gt;userRepository = $userRepository;&lt;br /&gt;
}  &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Userdaten holen ===&lt;br /&gt;
Z.B. im Controller:&lt;br /&gt;
 $user = $this-&amp;gt;userRepository-&amp;gt;findByUid($uid);&lt;br /&gt;
&lt;br /&gt;
=== Problem: User werden nicht ausgegeben weil record type nicht gesetzt ist ===&lt;br /&gt;
Hinweis: In neueren Versionen von Extbase ist das Mapping anders definiert -&amp;gt; nur bei alten Versionen wichtig (nicht verifiziert)&lt;br /&gt;
&lt;br /&gt;
Achtung: Extbase erweitert die fe_users und fe_groups um &amp;#039;&amp;#039;&amp;#039;das Feld tx_extbase_type (Record Type) Ist dies nicht vorhanden gibt es nichts zurück.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Im TypoScript definiert Extbase&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
 Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
  mapping.recordType = Tx_Extbase_Domain_Model_FrontendUser&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Im Mapping ist der recordType gesetzt d.h. es sucht nur fe_user mit dem recordType Tx_Extbase_Domain_Model_FrontendUser &lt;br /&gt;
&lt;br /&gt;
Lösung:&lt;br /&gt;
* Recordtype setzen&lt;br /&gt;
* oder Mapping löschen&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
 Tx_Extbase_Domain_Model_FrontendUser {&lt;br /&gt;
  mapping.recordType &amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* zusätzlich evtl. Recordtype automatisch vorbelegen -&amp;gt; im PageTS&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TCAdefaults.fe_users.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUser&lt;br /&gt;
TCAdefaults.fe_groups.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUserGroup&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: FE User in eigener Extension speichern ==&lt;br /&gt;
Am Beispiel der Extension gbrma. Der aktuell angemeldete User soll im Feld rma_user gespeichert werden. Dieses gehört zum Model &amp;#039;Rma&amp;#039;&lt;br /&gt;
=== Vorgehen ===&lt;br /&gt;
* Feld in ext_tables.sql anlegen -&amp;gt; Datenbank&lt;br /&gt;
* Feld in TCA anlegen -&amp;gt; Backend&lt;br /&gt;
* Feld in Model anlegen und Controller bearbeiten:&lt;br /&gt;
** mit Getter und Setter ergänzen-&amp;gt; Extbase Handling &lt;br /&gt;
** aktuell angemeldeter User abfragen&lt;br /&gt;
** User speichern (in create Action)&lt;br /&gt;
* Templates anpassen (wird hier nicht gezeigt)&lt;br /&gt;
=== ext_tables.sql ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
rma_user int(11) unsigned DEFAULT &amp;#039;0&amp;#039; NOT NULL,&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TCA ===&lt;br /&gt;
Configuration/TCA/Rma.php&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
		&amp;#039;rma_user&amp;#039; =&amp;gt; array(&lt;br /&gt;
			&amp;#039;exclude&amp;#039; =&amp;gt; 1,&lt;br /&gt;
			&amp;#039;label&amp;#039; =&amp;gt; &amp;#039;LLL:EXT:gbrma/Resources/Private/Language/locallang_db.xlf:tx_gbrma_domain_model_rna.rma_user&amp;#039;,&lt;br /&gt;
			&amp;#039;config&amp;#039; =&amp;gt; array(&lt;br /&gt;
				&amp;#039;type&amp;#039; =&amp;gt; &amp;#039;select&amp;#039;,&lt;br /&gt;
				&amp;#039;items&amp;#039; =&amp;gt; array (&lt;br /&gt;
					array(&amp;#039;&amp;#039;,0),&lt;br /&gt;
				),&lt;br /&gt;
				&amp;#039;foreign_table&amp;#039; =&amp;gt; &amp;#039;fe_users&amp;#039;,&lt;br /&gt;
				&amp;#039;foreign_class&amp;#039; =&amp;gt; &amp;#039;\TYPO3\CMS\Extbase\Domain\Model\FrontendUser&amp;#039;,&lt;br /&gt;
				&amp;#039;minitems&amp;#039; =&amp;gt; 0,&lt;br /&gt;
				&amp;#039;maxitems&amp;#039; =&amp;gt; 1,&lt;br /&gt;
				&amp;#039;size&amp;#039; =&amp;gt; 1,&lt;br /&gt;
				&amp;#039;appearance&amp;#039; =&amp;gt; array(&lt;br /&gt;
					&amp;#039;collapseAll&amp;#039; =&amp;gt; 0,&lt;br /&gt;
					&amp;#039;levelLinksPosition&amp;#039; =&amp;gt; &amp;#039;top&amp;#039;,&lt;br /&gt;
					&amp;#039;showSynchronizationLink&amp;#039; =&amp;gt; 1,&lt;br /&gt;
					&amp;#039;showPossibleLocalizationRecords&amp;#039; =&amp;gt; 1,&lt;br /&gt;
					&amp;#039;showAllLocalizationLink&amp;#039; =&amp;gt; 1&lt;br /&gt;
				),&lt;br /&gt;
			),&lt;br /&gt;
		),&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Model ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geobit\Gbrma\Domain\Model Rma.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	 * rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var integer&lt;br /&gt;
	 */&lt;br /&gt;
	protected $rmaUser = 0;&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	 * Returns the rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return integer $rmaUser&lt;br /&gt;
	 */&lt;br /&gt;
	public function getRmaUser() {&lt;br /&gt;
		return $this-&amp;gt;rmaUser;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	/**&lt;br /&gt;
	 * Sets the rmaUser&lt;br /&gt;
	 *&lt;br /&gt;
	 * @param integer $rmaUser&lt;br /&gt;
	 * @return void&lt;br /&gt;
	 */&lt;br /&gt;
	public function setRmaUser($rmaUser) {&lt;br /&gt;
		$this-&amp;gt;rmaUser = $rmaUser;&lt;br /&gt;
	}&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller ===&lt;br /&gt;
FrontendUser Repository bereitstellen (wir erweitern das von Extbase vorbereitete FrontendUser Repository, damit stehen uns dessen Objekte zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Geobit\Gbrma\Controller RmaController.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
	/**&lt;br /&gt;
	* FrontendUser Repository&lt;br /&gt;
	*&lt;br /&gt;
	* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	* @inject&lt;br /&gt;
	*/&lt;br /&gt;
	protected $userRepository;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Testen ob die fe_user jetzt zur Verfügung stehen kann man das z.B. in der List Action:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
		$user = $this-&amp;gt;userRepository-&amp;gt;findByUid(1);&lt;br /&gt;
		print \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( $user );&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Achtung: findAll() geht nicht !&lt;br /&gt;
&lt;br /&gt;
Jetzt wollen beim anlegen eines Datensatzes den aktuell angemeldeten User hinterlegen. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch in der Listenansicht möchten wir nur die Datensätze des aktuellen Users anzeige.&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Einfacher Zugriff auf fe_users Daten über ID ==&lt;br /&gt;
Wir möchten in unserer Extension in einem Feld die ID eines Users speichern und später auf die Daten des Users zugreifen.&lt;br /&gt;
Um die Daten eines Users zu nutzen müssen wir:&lt;br /&gt;
&lt;br /&gt;
Einfach das bereits in der Extbase Extension vorhandene Repository in unseren Controller injecten&lt;br /&gt;
&lt;br /&gt;
Controller&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	* FrontendUser Repository&lt;br /&gt;
	*&lt;br /&gt;
	* @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	* @inject&lt;br /&gt;
	*/&lt;br /&gt;
	protected $userRepository;&lt;br /&gt;
&lt;br /&gt;
        //... Zugriff z.B. um das Userobjekt des aktuellen Users zu holen&lt;br /&gt;
	/**&lt;br /&gt;
	 * Get current user obj&lt;br /&gt;
	 *&lt;br /&gt;
	 * @return \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository&lt;br /&gt;
	 */&lt;br /&gt;
	private function getCurrentUser() {&lt;br /&gt;
		if ($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user[&amp;#039;uid&amp;#039;] &amp;gt; 0) {&lt;br /&gt;
			$userId = $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;user[&amp;#039;uid&amp;#039;];&lt;br /&gt;
			$this-&amp;gt;currentUser = $this-&amp;gt;userRepository-&amp;gt;findByUid($userId);&lt;br /&gt;
			return $this-&amp;gt;currentUser; &lt;br /&gt;
		}else return false;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Erweitern der fe_user um eigene Felder ==&lt;br /&gt;
FE-users um eigene Felder erweitern (http://t3-developer.com/extbase-fluid/cheats-extbase/model/verwendung-der-fe-users-in-extbase/ 2015-06)&lt;br /&gt;
&lt;br /&gt;
Soll die Tabelle FE-Users um eigene Felder erweitert werden, sind folgende Dateien anzupassen:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/extension_tables.sql&amp;#039;&amp;#039;&amp;#039; -&amp;gt; SQL Anweisung um die Tabellle FE-Users in der Datenbank um eigene Felder zu ergänzen&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/extension_tables.php&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Neue Felder im Backend verfügbar machen&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/Configuration/TypoScript/setup.txt&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Mapping der eigenen Tabellenfelder für Extbase&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MeineExtension/Classes/Domain/Model/MeinFeUserModel.php&amp;#039;&amp;#039;&amp;#039; -&amp;gt; Objekte initialisieren und Setter/Getter setzen&lt;br /&gt;
&lt;br /&gt;
In den nachfolgenden Beispiellistings wird die fe-users Tabelle um ein Textfeld &amp;quot;Meinfeld&amp;quot; ergänzt.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datei: MeineExtension/extension_tables.sql&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE fe_users {&lt;br /&gt;
    mein_feld varchar(255) DEFAULT &amp;#039;&amp;#039; NOT NULL,&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Datei: MeineExtension/ext_tables.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
//**************************************************//&lt;br /&gt;
// USER | Erweiterung fe_users um Feld MeinFeld&lt;br /&gt;
//**************************************************//&lt;br /&gt;
t3lib_div::loadTCA(&amp;#039;fe_users&amp;#039;);&lt;br /&gt;
$addColumnArray = array(&lt;br /&gt;
    &amp;#039;mein_feld&amp;#039; =&amp;gt; array(&lt;br /&gt;
        &amp;#039;exclude&amp;#039; =&amp;gt; 0,&lt;br /&gt;
        &amp;#039;label&amp;#039; =&amp;gt; &amp;#039;Feldbeschriftung:&amp;#039;,&lt;br /&gt;
        &amp;#039;config&amp;#039; =&amp;gt; array(&lt;br /&gt;
        &amp;#039;type&amp;#039; =&amp;gt; &amp;#039;input&amp;#039;,&lt;br /&gt;
        &amp;#039;size&amp;#039; =&amp;gt; 20,&lt;br /&gt;
        &amp;#039;eval&amp;#039; =&amp;gt; &amp;#039;trim&amp;#039;,&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
);&lt;br /&gt;
t3lib_extMgm::addTCAcolumns(&amp;#039;fe_users&amp;#039;, $addColumnArray);&lt;br /&gt;
t3lib_extMgm::addToAllTCAtypes(&amp;#039;fe_users&amp;#039;, &amp;#039;--div--;NeuerReiter , mein_feld&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiel: Erweiterte FE_User Felder in eigener Extension nutzen ==&lt;br /&gt;
Siehe auch http://www.derhansen.de/2012/12/typo3-extbase-mapping-existing-fields.html (2015-06) dort wird noch die alte Schreibweise statt der Namespace Schreibweise genutzt.&lt;br /&gt;
&lt;br /&gt;
Wenn wir von anderen Extension erweiterte Felder aus fe_users nutzen, oder Felder selbst erweitern wollen, können wir nciht wie oben vorgehen und direkt in den Controller injecten. Wir müssen wir für unsere User in unserer Extension ein &amp;#039;&amp;#039;&amp;#039;eigenes Model&amp;#039;&amp;#039;&amp;#039; und ein &amp;#039;&amp;#039;&amp;#039;eigenes Repository&amp;#039;&amp;#039;&amp;#039; einbauen. Und &amp;#039;&amp;#039;&amp;#039;dieses injecten&amp;#039;&amp;#039;&amp;#039;. Zum Glück ist in Extbase für fe_users einiges bereitgestellt, das wir durch erweitern direkt übernehmen können.&lt;br /&gt;
=== Model für die fe_user ===&lt;br /&gt;
In der eigenen Extension zuerst ein &amp;#039;&amp;#039;&amp;#039;Model anlegen&amp;#039;&amp;#039;&amp;#039;. Normalerweise wird dazu Abstract Entity erweitert. Wir &amp;#039;&amp;#039;&amp;#039;erweitern&amp;#039;&amp;#039;&amp;#039; diesmal das bereits von Extbase angelegte Model, somit haben wir dessen Eigenschaften bereits (kann man schön in der extbase extension im Quelltext sehen.)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class RmaUser extends TYPO3\CMS\Extbase\Domain\Model\FrontendUser {&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hinweis: Um nur die Standardfelder der fe_users zu benutzen und die Daten zu holen, brauchen wir diese Datei nicht anzulegen Siehe Beispiel oben.&lt;br /&gt;
&lt;br /&gt;
=== Repository für die fe_user ===&lt;br /&gt;
Auch hier erweitern wir das bereits vorhandene Repository. Also statt \TYPO3\CMS\Extbase\Persistence\Repository zu erweitern. Nehmen wir:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
class RmaUser extends TYPO3\CMS\Extbase\Domain\Model\FrontendUser {&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mapping für die fe_user ===&lt;br /&gt;
Wir haben in unserer Extension jetzt das Datenmodell und die Datenrepository also das Behältnis. Extbase weiß aber noch nicht welche Tabelle es nehmen soll, wenn eine Anfrage unserer Extension kommt. Deshalb mappen wir unser Model auf die Tabelle fe_user. Das erledigen wir mit TypoScript:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;typoscript&amp;quot;&amp;gt;&lt;br /&gt;
config.tx_extbase.persistence.classes {&lt;br /&gt;
    Geobit/Gbrma/Domain/Model/RmaUser  {&lt;br /&gt;
        mapping {&lt;br /&gt;
            tableName = fe_users&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Erweiterte Felder der fe_users nutzen ===&lt;br /&gt;
ToDo&lt;br /&gt;
* Im Prinzip einfach getter und setter im Model definieren&lt;br /&gt;
=== Eigene Felder erweitern ===&lt;br /&gt;
Todo&lt;br /&gt;
&lt;br /&gt;
== Fallstricke ==&lt;br /&gt;
=== SQL Exeption - falsche Tabelle ===&lt;br /&gt;
Hier liegt meist ein falsches Mapping vor. Je nachdem wie das UserModel erzeugt wurde muß man beim Mapping darauf achten das das Plugin Model nochmal auf die fe_users gemappt wird (und nicht das Extbase Model)&lt;br /&gt;
Bei ältern Typo3 Versionen wird das Mapping Setup nur in der ext_typoscript_setup.txt erkannt.&lt;br /&gt;
&lt;br /&gt;
Siehe auch: http://wiki.zone30.info/wikizone/index.php/Extbase_-_Zugriff_auf_Tabellen_anderer_Extbase_Extensions#Tabelle_mappen&lt;br /&gt;
=== Extbase Model ab 6.0 ===&lt;br /&gt;
TYPO3\CMS\Extbase\Domain\Model\FrontendUser&lt;br /&gt;
&lt;br /&gt;
Im Seiten TS der Rootseite habe ich folgenden Eintrag:&lt;br /&gt;
TCAdefaults.fe_users.tx_extbase_type = TYPO3\CMS\Extbase\Domain\Model\FrontendUser&lt;br /&gt;
TCAdefaults.fe_groups.tx_extbase_type = TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup&lt;br /&gt;
&lt;br /&gt;
=== FE-User müssen einer Gruppe zugeordnet sein ===&lt;/div&gt;</summary>
		<author><name>87.165.0.123</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Extbase_Extensions_-_Snippets_und_Glossar&amp;diff=21272</id>
		<title>Extbase Extensions - Snippets und Glossar</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Extbase_Extensions_-_Snippets_und_Glossar&amp;diff=21272"/>
		<updated>2015-10-23T18:02:42Z</updated>

		<summary type="html">&lt;p&gt;87.165.0.123: /* Zugriff auf fe_user */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Beinhaltet z.T. auch Fluid&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
[[Extbase - Nützliche Funktionen und Libraries]]&lt;br /&gt;
== Hinweis neue Namespace Regelung für Klassen ==&lt;br /&gt;
[[Extbase Änderungen ab TYPO3 V6]]&lt;br /&gt;
&lt;br /&gt;
== Glossar ==&lt;br /&gt;
[[Extbase - Glossar]]&lt;br /&gt;
&lt;br /&gt;
== Snippets Links ==&lt;br /&gt;
http://typo3.org/documentation/snippets/&lt;br /&gt;
== Mehrere Models in einem Formular / einer Action steuern ==&lt;br /&gt;
== Rendering des Views steuern ==&lt;br /&gt;
=== Timestamp - crdate und tstamp nutzen ===&lt;br /&gt;
[[Extbase - Timestamp nutzen]]&lt;br /&gt;
&lt;br /&gt;
=== Rendering verhindern ===&lt;br /&gt;
Am Ende der Action wird implizit immer&lt;br /&gt;
 return $this-&amp;gt;view-&amp;gt;render(); &lt;br /&gt;
ausgeführt (auch wenn man es nicht schreibt). Will man das verhindern muß man &lt;br /&gt;
 return false; &lt;br /&gt;
zurückgeben&lt;br /&gt;
&lt;br /&gt;
== Objekt-Datenbank-Abfragen steuern ==&lt;br /&gt;
Das Ergebnis der findAll() Funktion im Controller läßt sich mit dem QueryInterface steuern.&lt;br /&gt;
Z.B. kann man im Repository die Standardsortierung festlegen.&lt;br /&gt;
&lt;br /&gt;
[[Extbase - Query Objekt]]&lt;br /&gt;
&lt;br /&gt;
[[Extbase - Sortierung und Abfrage von Objekten]]&lt;br /&gt;
&lt;br /&gt;
== Objekte erstellen, löschen, bearbeiten ==&lt;br /&gt;
[[Extbase - Objekte handeln]]&lt;br /&gt;
&lt;br /&gt;
== TypoScript Konfiguration im Controller nutzen ==&lt;br /&gt;
=== Hinweis zu Settings in TypoScript ===&lt;br /&gt;
Im Action Controller und im Fluid Template sind nur die Objekte über $this-&amp;gt;settings bzw. settings.objektname sichtbar die in &amp;#039;&amp;#039;&amp;#039;plugin.tx_extname.settings&amp;#039;&amp;#039;&amp;#039; liegen.&lt;br /&gt;
&lt;br /&gt;
TypoScript&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plugin.tx_some-extname.settings {&lt;br /&gt;
    myXsetting = XXXX&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
PHP&lt;br /&gt;
 $valX = $this-&amp;gt;settings[&amp;#039;myXsetting&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
== Property Mapper ==&lt;br /&gt;
Ein Property Mapper hat die Aufgabe, die Daten, die von Formularen an den Webserver gesendet werden in die korrekten Variablentypen zu konvertieren.&lt;br /&gt;
&lt;br /&gt;
Er sorgt auch dafür das die Propertys auf die richtigen Modelle und Tabellen gemappt werden.&lt;br /&gt;
&lt;br /&gt;
http://www.typo3lexikon.de/typo3-tutorials/extensions/extbase/property-mapper.html&lt;br /&gt;
&lt;br /&gt;
== E-Mails mit Extbase ==&lt;br /&gt;
http://t3-developer.com/extbase-fluid/extensions-erweitern/e-mail-versand-aus-extensions/mailversand/&lt;br /&gt;
&lt;br /&gt;
http://www.benny-vs-web.de/typo3/extbase-fluid-zum-rendern-von-e-mail-templates-verwenden/&lt;br /&gt;
&lt;br /&gt;
[[Extbase - E-Mail / MailMessage]]&lt;br /&gt;
&lt;br /&gt;
== Lokalisierung - Language Files ==&lt;br /&gt;
&lt;br /&gt;
=== Im Extbase Controller lokalisieren ===&lt;br /&gt;
Z.B. bei Fehlermeldungen. flashMessages oder speziellen Ausgaben&lt;br /&gt;
&lt;br /&gt;
 Tx_Extbase_Utility_Localization::translate($langkey,$extensionName)&lt;br /&gt;
$extensionName = Extbase name (UpperCammelCase ohen Unterstriche)&lt;br /&gt;
&lt;br /&gt;
$langkey muss der locallang.xml datei bzw. xlf hinzugefügen.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;label index=&amp;quot;tx_t3easyplugins_domain_model_plugin.createdSuccessful&amp;quot;&amp;gt;Your new Plugin was created.&amp;lt;/label&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unten ein kleines Beispiel.&lt;br /&gt;
Tx_Extbase_Utility_Localization::translate&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;/**&lt;br /&gt;
 * action create&lt;br /&gt;
 *&lt;br /&gt;
 * @param $newEntry&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function createAction(Tx_T3easyPlugins_Domain_Model_Plugin $newEntry) {&lt;br /&gt;
    $this-&amp;gt;entryRepository-&amp;gt;add($newEntry);&lt;br /&gt;
    $this-&amp;gt;flashMessageContainer-&amp;gt;add(Tx_Extbase_Utility_Localization::translate(&amp;#039;tx_t3easyplugins_domain_model_Plugin.createdSuccessful&amp;#039;, &amp;#039;T3easyPlugins&amp;#039;));&lt;br /&gt;
    $this-&amp;gt;redirect(&amp;#039;list&amp;#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
locallang.xml&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;label index=&amp;quot;tx_t3easyplugins_domain_model_plugin.createdSuccessful&amp;quot;&amp;gt;Your new Plugin was created.&amp;lt;/label&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Actions ==&lt;br /&gt;
=== Controller und Actions Basics ===&lt;br /&gt;
http://docs.typo3.org/typo3cms/ExtbaseFluidBook/7-Controllers/1-Creating-Controllers-and-Actions.html&lt;br /&gt;
=== Neue Action realisieren ===&lt;br /&gt;
# Action registrieren (localconf.php)&lt;br /&gt;
# Methode für die Action schreiben (im Controller des Objektes)&lt;br /&gt;
# Auf gewünschten View weiterleiten (z.B. &amp;#039;&amp;#039;$this-&amp;gt;redirect(&amp;#039;list&amp;#039;);&amp;#039;&amp;#039; )&lt;br /&gt;
&lt;br /&gt;
=== Requestdaten verarbeiten ===&lt;br /&gt;
==== Get / Post Vars ====&lt;br /&gt;
 $this-&amp;gt;request-&amp;gt;getArguments()&lt;br /&gt;
 $this-&amp;gt;request-&amp;gt;getArgument(&amp;#039;variable&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
 $args = $this-&amp;gt;request-&amp;gt;getArguments();&lt;br /&gt;
 $showUid = $args[&amp;#039;show&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
 // Test if Argument is available&lt;br /&gt;
 $this-&amp;gt;request-&amp;gt;hasArgument(&amp;#039;variable&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==== cObject ====&lt;br /&gt;
 //$cObjData = $this-&amp;gt;request-&amp;gt;getContentObjectData(); // deprecated&lt;br /&gt;
 $this-&amp;gt;configurationManager-&amp;gt;getContentObject()&lt;br /&gt;
==== Redirect ====&lt;br /&gt;
 $this-&amp;gt;redirect(&amp;#039;show&amp;#039;,&amp;#039;Blog&amp;#039;,NULL,array(&amp;#039;blog&amp;#039;=&amp;gt;$blog));&lt;br /&gt;
 $this-&amp;gt;redirect(&amp;#039;nameOfAction&amp;#039;,&amp;#039;NameOfDomainModel&amp;#039;,NULLorOtherExtName,array(&amp;#039;objectNameToSend&amp;#039;=&amp;gt;$objectToSend));&lt;br /&gt;
&lt;br /&gt;
=== Auf Daten von anderen Models / Repositorys im Controller zugreifen. Dependency Injection ===&lt;br /&gt;
Will man auf Daten anderer Extensions zugreifen oder verknüpfte Daten komplett ohne ein Objekt des Aggregate Root (also die Haupttabelle) ausgeben muß man die Datenstruktur Injecten. Grundsätzlich kann man mit der Inject Methode aus jeder Extension heraus &amp;#039;&amp;#039;&amp;#039;auf Daten anderer Extensions zugreifen&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Im Controller steht wegen der strikten &amp;#039;&amp;#039;&amp;#039;Trennung der Modelle&amp;#039;&amp;#039;&amp;#039; erstmal das Repository (Die Datenstruktur) des Models zur Verfügung. Die verknüpften Daten (hier im Beispiels die Genres, gibt der View zwar über die Verknüpfung aus, das sind aber nur die mit dem jeweiligen Datensatz &amp;#039;&amp;#039;&amp;#039;verknüpften Daten&amp;#039;&amp;#039;&amp;#039;. Z.B. die Genres einer Band. Will man z.B. &amp;#039;&amp;#039;&amp;#039;alle Genres im Listview der Bands&amp;#039;&amp;#039;&amp;#039; ausgeben braucht man ein &amp;#039;&amp;#039;&amp;#039;Repository der Genres und muß den Genre Controller in den Band Controller injecten&amp;#039;&amp;#039;&amp;#039;. Dann kann man auf alle Funktionen des Genre Controllers auch aus dem Band Controller zugreifen. So bleibt auch alles sauber getrennt.&lt;br /&gt;
&lt;br /&gt;
* eigenes &amp;#039;&amp;#039;&amp;#039;Repository&amp;#039;&amp;#039;&amp;#039; für verknüpfte Daten &amp;#039;&amp;#039;&amp;#039;erstellen&amp;#039;&amp;#039;&amp;#039; (z.B. Genre)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
	/**&lt;br /&gt;
	 * genreRepository&lt;br /&gt;
	 *&lt;br /&gt;
	 * @var \Geobit\Gbbandpass\Domain\Repository\GenreRepository&lt;br /&gt;
	 * @inject&lt;br /&gt;
	 */&lt;br /&gt;
	protected $genreRepository = NULL;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*Im Controller (Hauptcontroller) deiner Extension injectest du das gewünschte Repository. Allerdings gibt es unterschiedliche Methoden je nachdem welche Typo3 Version du verwendest.&lt;br /&gt;
&lt;br /&gt;
====Dependency Injection &amp;#039;TYPO3 ab 6.0====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var \Vendor\Extension\Domain\Repository\SomeRepository&lt;br /&gt;
 * @inject&lt;br /&gt;
 */&lt;br /&gt;
protected $someRepository;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Dependency Injection TYPO3 = 4.7 ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var Tx_MyExtension_Domain_Repository_SomeRepository&lt;br /&gt;
 * @inject&lt;br /&gt;
 */&lt;br /&gt;
 protected $someRepository;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Dependency Injection TYPO3 vor 4.7 ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * @var Tx_MyExtension_Domain_Repository_SomeRepository&lt;br /&gt;
 */&lt;br /&gt;
 protected $someRepository;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Inject SomeRepository&lt;br /&gt;
 * @param Tx_MyExtension_Domain_Repository_SomeRepository $someRepository&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function injectSomeRepository(Tx_MyExtension_Domain_Repository_SomeRepository $someRepository) {&lt;br /&gt;
  $this-&amp;gt;someRepository = $someRepository;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Jetzt kann man $this-&amp;gt;someRepository mit all seinen Methoden auch in diesem Controller nutzen.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Hinweis:&amp;#039;&amp;#039;&amp;#039; Nach Änderung System Cache löschen !&lt;br /&gt;
&lt;br /&gt;
=== Controller-Action Kombinationen für Frontend-Plugins definieren ===&lt;br /&gt;
http://docs.typo3.org/typo3cms/ExtbaseFluidBook/b-ExtbaseReference/Index.html&lt;br /&gt;
&lt;br /&gt;
In ext_localconf.php sind &amp;#039;&amp;#039;&amp;#039;erlaubte Actions&amp;#039;&amp;#039;&amp;#039; hinterlegt. Der &amp;#039;&amp;#039;&amp;#039;erste Eintrag ist die Default-Action&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(&lt;br /&gt;
	&amp;#039;Geobit.&amp;#039; . $_EXTKEY,&lt;br /&gt;
	&amp;#039;Mailformtest&amp;#039;,&lt;br /&gt;
	array(&lt;br /&gt;
		&amp;#039;Mailform&amp;#039; =&amp;gt; &amp;#039;list, show, new, create&amp;#039;,&lt;br /&gt;
		&lt;br /&gt;
	),&lt;br /&gt;
	// non-cacheable actions&lt;br /&gt;
	array(&lt;br /&gt;
		&amp;#039;Mailform&amp;#039; =&amp;gt; &amp;#039;create, &amp;#039;,&lt;br /&gt;
		&lt;br /&gt;
	)&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Zu diesem Beispiel gehört der Controller unter&lt;br /&gt;
 Classes/Controller/MailformController.php&lt;br /&gt;
&lt;br /&gt;
==Domainmodel Beispiele ==&lt;br /&gt;
=== M:N Verbindung komplett===&lt;br /&gt;
[[Extbase - m:n Verknüpfung]]&lt;br /&gt;
&lt;br /&gt;
== Diverse ==&lt;br /&gt;
=== Actions anlegen ===&lt;br /&gt;
Im Controller:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * action list&lt;br /&gt;
 *&lt;br /&gt;
 * @return void&lt;br /&gt;
 */&lt;br /&gt;
public function listAction() {&lt;br /&gt;
	$myextname = $this-&amp;gt;myextRepository-&amp;gt;findAll();&lt;br /&gt;
	$this-&amp;gt;view-&amp;gt;assign(&amp;#039;myextname&amp;#039;, $myextname);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== addFlashMessage ===&lt;br /&gt;
Im Controller&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $this-&amp;gt;addFlashMessage(&amp;#039;This is a simple success message&amp;#039;);&lt;br /&gt;
 $this-&amp;gt;addFlashMessage(&amp;#039;The message body&amp;#039;, &amp;#039;Message title&amp;#039;, \TYPO3\CMS\Core\Messaging\AbstractMessage::OK, TRUE);&lt;br /&gt;
 $this-&amp;gt;addFlashMessage(&amp;#039;&amp;lt;strong&amp;gt;HTML-Messageplement&amp;lt;/strong&amp;gt;&amp;#039;, &amp;#039;&amp;#039;, \TYPO3\CMS\Core\Messaging\AbstractMessage::ERROR);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Existierende Extbase Klassen erweitern ===&lt;br /&gt;
( Früher XCLASS ) - http://blog.sebastiaandejonge.com/articles/2013/june/11/class-extension-in-extbase/&lt;br /&gt;
&lt;br /&gt;
== Default Sortierung in Extbase ==&lt;br /&gt;
&lt;br /&gt;
=== Beispiel aus Slidercalc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * The repository for Sliders&lt;br /&gt;
 */&lt;br /&gt;
class SliderRepository extends \TYPO3\CMS\Extbase\Persistence\Repository {&lt;br /&gt;
	protected $defaultOrderings = array(&lt;br /&gt;
		&amp;#039;category.sorting&amp;#039; =&amp;gt; \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING,&lt;br /&gt;
		&amp;#039;sorting&amp;#039; =&amp;gt; \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_ASCENDING&lt;br /&gt;
		//&amp;#039;date&amp;#039; =&amp;gt; \TYPO3\CMS\Extbase\Persistence\QueryInterface::ORDER_DESCENDING&lt;br /&gt;
	);&lt;br /&gt;
	&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Quelle: http://t3n.de/magazin/zehn-tipps-tricks-extbase-fluid-227639/2/ (11/2014)&lt;br /&gt;
&lt;br /&gt;
Default-Sortierung im Repository&lt;br /&gt;
&lt;br /&gt;
Nicht unbedingt unbekannt, aber weitestgehend ungenutzt ist ein Feature, welches in Extbase 1.3 hinzugekommen ist: Im &amp;#039;&amp;#039;&amp;#039;Repository&amp;#039;&amp;#039;&amp;#039; besteht die Möglichkeit, das Ergebnis nach bestimmten Feldern aufsteigend oder absteigend zu sortieren. Dies wird beispielsweise mittels „&lt;br /&gt;
 $query-&amp;gt;setOrderings(array(&amp;#039;name&amp;#039; =&amp;gt; Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING));&lt;br /&gt;
erledigt.&lt;br /&gt;
&lt;br /&gt;
Um dies nicht für jede einzelne Repository-Funktion einstellen zu müssen, gibt es die &amp;#039;&amp;#039;&amp;#039;Eigenschaft defaultOrderings&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
Im Repository&lt;br /&gt;
 protected $defaultOrderings = array (&amp;#039;name&amp;#039; =&amp;gt; Tx_Extbase_Persistence_QueryInterface::ORDER_DESCENDING);&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
=== Fehlermeldung class_parents(): object or string expected ===&lt;br /&gt;
Nachdem man neue Properties hinzugefügt hat kommt obige Fehlermeldung. Dies ist ein Bug in Extbase. Nur Truncating cf_extbase_reflection works. (Bei 4.5 die Extbase Cachetabellen leeren)&lt;br /&gt;
=== Debugging im Controller ===&lt;br /&gt;
&lt;br /&gt;
==== Beispiel ====&lt;br /&gt;
 print \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( $this );&lt;br /&gt;
&lt;br /&gt;
==== Beispiel ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
t3lib_utility_Debug::debug($var, &amp;#039;Debug: &amp;#039; . __FILE__ . &amp;#039; in Line: &amp;#039; . __LINE__);&lt;br /&gt;
 &lt;br /&gt;
# namespaces&lt;br /&gt;
\TYPO3\CMS\Core\Utility\DebugUtility::debug($var, &amp;#039;Debug: &amp;#039; . __FILE__ . &amp;#039; in Line: &amp;#039; . __LINE__);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== Beispiel ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Tx_Extbase_Utility_Debugger::var_dump($var);&lt;br /&gt;
 &lt;br /&gt;
# namespaces&lt;br /&gt;
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($var);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debugging wenn keine Datensätze gefunden werden ===&lt;br /&gt;
Im Repository kann man das Queryinterface überschreiben und so z.B. die Abfrage der storage Page unterbinden (alle werden ausgegeben). Auch Fehler im sql werden sichtbar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
* @return QueryInterface&lt;br /&gt;
*/&lt;br /&gt;
public function createQuery(){&lt;br /&gt;
$query = parent::createQuery();&lt;br /&gt;
$query-&amp;gt;getQuerySettings()-&amp;gt;setRespectStoragePage(FALSE);&lt;br /&gt;
return $query;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zugriff auf TypoScript ==&lt;br /&gt;
Auf die TypoScript Einstellungen unter: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;typoscript&amp;quot;&amp;gt;&lt;br /&gt;
plugin.tx_myextname {&lt;br /&gt;
	settings{&lt;br /&gt;
		meinWert = 123    &lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Kann man einfach im Controller mittels $this-&amp;gt;settings[&amp;#039;meinWert&amp;#039;]; zugreifen. Beispiel&lt;br /&gt;
 $adminmail = $this-&amp;gt;settings[&amp;#039;adminMail&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
Man kann mit dem Configuration Manager auch auf andere Einstellungen zugreifen:&lt;br /&gt;
&lt;br /&gt;
https://typo3.org/api/typo3cms/class_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_configuration_1_1_configuration_manager.html#ac6b6323862565409eddac516dca08c10&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getConfiguration	(&lt;br /&gt;
 	$configurationType,&lt;br /&gt;
 	$extensionName = NULL,&lt;br /&gt;
 	$pluginName = NULL &lt;br /&gt;
)	&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Daten aus anderen Extensions ==&lt;br /&gt;
=== Zugriff auf Frontend User (feuser) ===&lt;br /&gt;
[[Extbase - Zugriff auf die fe_user Tabelle]]&lt;br /&gt;
&lt;br /&gt;
=== Zugriff auf andere Extensions ===&lt;br /&gt;
[[Extbase - Zugriff auf Tabellen anderer Extbase Extensions]]&lt;br /&gt;
&lt;br /&gt;
== AJAX mit Extbase ==&lt;br /&gt;
=== AJAX über neuen Page Type ===&lt;br /&gt;
Quelle: http://t3-developer.com/extbase-fluid/extensions-erweitern/ajax-in-extensions/ajaxcalls-mit-pagetype/ (2014/12)&lt;br /&gt;
&lt;br /&gt;
Die Verwendung eines eigenen page Types für Ajax Calls ist relativ simpel. Zunächst müsst ihr euer Extensionsetup um einen neuen &amp;#039;&amp;#039;&amp;#039;PageType erweitern&amp;#039;&amp;#039;&amp;#039;. Die PageType Nummer muss einmalig in der Installation sein, also ggf. bereits vergebene PageTypes für RSS, Sitemaps, Print &amp;amp; Co beachten.&lt;br /&gt;
&lt;br /&gt;
==== Extensionsetup ====&lt;br /&gt;
&lt;br /&gt;
Bitte beachtet das ihr in der letzten Zeile eure den Extensionnamen ohne &amp;#039;tx_&amp;#039; Prefix angeben müsst!&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TypoScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ajaxCall = PAGE &lt;br /&gt;
ajaxCall { &lt;br /&gt;
typeNum = 999 &lt;br /&gt;
     config.disableAllHeaderCode = 1 &lt;br /&gt;
     config.metaCharset = UTF-8 &lt;br /&gt;
    10 = COA &lt;br /&gt;
    10 &amp;lt; tt_content.list.20.myextension_myplugin &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Der AjaxCall in jQuery&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$(&amp;#039;#jq-send&amp;#039;).click(function(e) { &lt;br /&gt;
    $.ajax({ &lt;br /&gt;
        var controller = tx_myExt_myplugin[controller]= blabla; &lt;br /&gt;
        var action = tx_myExt_myplugin[action]= meineControllerFunction; // ohne Action am Ende &lt;br /&gt;
        var pagetype = 999;&lt;br /&gt;
        var path = $(location).attr(&amp;#039;href&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        url: path +  &amp;#039;/?&amp;#039; + controller + &amp;#039;&amp;amp;&amp;#039; + action + &amp;#039;&amp;amp;type=&amp;#039; + pagetype &lt;br /&gt;
        //optionale Parameter &lt;br /&gt;
        data: &amp;#039;useruid=&amp;#039; + useruid, &lt;br /&gt;
&lt;br /&gt;
        success: function(result) { &lt;br /&gt;
            console.log(result); &lt;br /&gt;
            //hier kommen eure Anweisungen rein&lt;br /&gt;
        }, &lt;br /&gt;
        error: function(error) { &lt;br /&gt;
            console.log(error); &lt;br /&gt;
        } &lt;br /&gt;
    }); &lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ein Beispiel findet ihr auch in meiner Blogextension &amp;quot;multiblog&amp;quot; auf Github: ajaxCall in Blogextension&lt;br /&gt;
&lt;br /&gt;
====Ajax Function im Controller====&lt;br /&gt;
&lt;br /&gt;
Die Controllerfunction muss natürlich wie jede Action in der &amp;#039;&amp;#039;&amp;#039;ext_localconf.php registriert&amp;#039;&amp;#039;&amp;#039; sein. Innerhalb dieser Action steht euch die ganz &amp;#039;&amp;#039;&amp;#039;normale Extbase Umgebung&amp;#039;&amp;#039;&amp;#039; zur Verfügung, also alles das was ihr in &amp;#039;normalen&amp;#039; Funktionen auch habt (injected Repositories, mapped Tables, settings etc.) Genau das ist der &amp;#039;&amp;#039;&amp;#039;Unterschied zu einem AjaxCall über eID&amp;#039;&amp;#039;&amp;#039;, das komplette TSFE ist geladen.&lt;br /&gt;
&lt;br /&gt;
Am Ende der Funktion müsst Ihr euch nur entscheiden, was Ihr zurückgeben wollt:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rückgabe eine json strings (z.B. Ergebnisarray):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 return json_encode($myArray);&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rückgabe eines kompletten Views als html string&amp;#039;&amp;#039;&amp;#039;. Am Ende der Ajax Funktion im Controller setzt Ihr ganz normal euren View (Template muss vorhanden sein):&lt;br /&gt;
&lt;br /&gt;
 $this-&amp;gt;view-&amp;gt;assign(&amp;#039;myAjaxAction, $values);&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Keinerlei Rückgabe&amp;#039;&amp;#039;&amp;#039; z.B wenn Ihr nur Daten nur für einen Counter speichert:&lt;br /&gt;
&lt;br /&gt;
 exit;&lt;br /&gt;
&lt;br /&gt;
Innerhalb von der jQuery Funktion &amp;#039;&amp;#039;success:function(result) { }&amp;#039;&amp;#039; wird dann das Ergebnis ausgewertet. Die vom Controller zurückgegebenen Werte stehen in der &amp;#039;&amp;#039;&amp;#039;Variablen result&amp;#039;&amp;#039;&amp;#039; zur Verfügung.&lt;br /&gt;
&lt;br /&gt;
=== AJAX Call über eid Mechanismus ===&lt;br /&gt;
Quelle: http://t3-developer.com/extbase-fluid/extensions-erweitern/ajax-in-extensions/ajax-dispatcher-eid-in-typo3-61/ (2014/12)&lt;br /&gt;
&lt;br /&gt;
Ajax Dispatcher für TYPO3 6.2 - wichtige Hinweise!&lt;br /&gt;
&lt;br /&gt;
Damit das nachfolgende Script auch unter TYPO3 6.2.3 funktioniert, müssen folgende Zeilen geändert werden:&lt;br /&gt;
&lt;br /&gt;
Zeile 101:&lt;br /&gt;
&lt;br /&gt;
 \TYPO3\CMS\Core\Core\Bootstrap::getInstance();&lt;br /&gt;
Siehe auch forge.typo3.org/issues/59070.&lt;br /&gt;
&lt;br /&gt;
Ajax Dispaytcher für TYPO3 6.1 und Namespaces. Die Datei ist getestet und läuft auch ;). Ihr müsst in &amp;#039;&amp;#039;&amp;#039;Zeile 82 + 83 den von Euch benutzen Vendor und Extension Namen einsetzten&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Siehe auch alle weiteren Angaben im Kommentarbereich des Dispatchers.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
/** *************************************************************&lt;br /&gt;
*&lt;br /&gt;
* Extbase Dispatcher for Ajax Calls TYPO3 6.1 namespaces&lt;br /&gt;
*&lt;br /&gt;
* IMPORTANT Use this script only in Extensions with namespaces&lt;br /&gt;
*&lt;br /&gt;
* Klaus Heuer &amp;lt;klaus.heuer@t3-developer.com&amp;gt;&lt;br /&gt;
*&lt;br /&gt;
* This script is part of the TYPO3 project. The TYPO3 project is&lt;br /&gt;
* free software; you can redistribute it and/or modify&lt;br /&gt;
* it under the terms of the GNU General Public License as published by&lt;br /&gt;
* the Free Software Foundation; either version 2 of the License, or&lt;br /&gt;
* (at your option) any later version.&lt;br /&gt;
*&lt;br /&gt;
* The GNU General Public License can be found at&lt;br /&gt;
* http://www.gnu.org/copyleft/gpl.html.&lt;br /&gt;
*&lt;br /&gt;
* This script is distributed in the hope that it will be useful,&lt;br /&gt;
* but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the&lt;br /&gt;
* GNU General Public License for more details.&lt;br /&gt;
*&lt;br /&gt;
* This copyright notice MUST APPEAR in all copies of the script!&lt;br /&gt;
* ************************************************************* */&lt;br /&gt;
/** ************************************************************&lt;br /&gt;
* Usage of this script:&lt;br /&gt;
*&lt;br /&gt;
* - Copy this script in your Extension Dir in the Folder Classes&lt;br /&gt;
* - Set the Vendor and Extension Name in Line 82 + 83&lt;br /&gt;
* - Include the next line in the ext_localconf.php, change the ext name!&lt;br /&gt;
* - $TYPO3_CONF_VARS[&amp;#039;FE&amp;#039;][&amp;#039;eID_include&amp;#039;][&amp;#039;ajaxDispatcher&amp;#039;] = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath(&amp;#039;myExtension&amp;#039;).&amp;#039;Classes/EidDispatcher.php&amp;#039;;&lt;br /&gt;
*&lt;br /&gt;
* Use for Ajax Calls in your jQuery Code:&lt;br /&gt;
*&lt;br /&gt;
* $(&amp;#039;.jqAjax&amp;#039;).click(function(e) {&lt;br /&gt;
* var uid = $(this).find(&amp;#039;.uid&amp;#039;).html();&lt;br /&gt;
* var storagePid = &amp;#039;11&amp;#039;;&lt;br /&gt;
*&lt;br /&gt;
* $.ajax({&lt;br /&gt;
* async: &amp;#039;true&amp;#039;,&lt;br /&gt;
* url: &amp;#039;index.php&amp;#039;,&lt;br /&gt;
* type: &amp;#039;POST&amp;#039;,&lt;br /&gt;
*&lt;br /&gt;
* data: {&lt;br /&gt;
*     eID: &amp;quot;ajaxDispatcher&amp;quot;,&lt;br /&gt;
*     request: {&lt;br /&gt;
*          pluginName: &amp;#039;patsystem&amp;#039;,&lt;br /&gt;
*          controller: &amp;#039;Todo&amp;#039;,&lt;br /&gt;
*          action: &amp;#039;findTodoByAjax&amp;#039;,&lt;br /&gt;
*          arguments: {&lt;br /&gt;
*               &amp;#039;uid&amp;#039;: uid,&lt;br /&gt;
*               &amp;#039;storagePid&amp;#039;: storagePid&lt;br /&gt;
*               }&lt;br /&gt;
*           }&lt;br /&gt;
*      },&lt;br /&gt;
*      dataType: &amp;quot;json&amp;quot;,&lt;br /&gt;
*&lt;br /&gt;
*      success: function(result) {&lt;br /&gt;
*           console.log(result);&lt;br /&gt;
*      },&lt;br /&gt;
*      error: function(error) {&lt;br /&gt;
*           console.log(error);&lt;br /&gt;
*      }&lt;br /&gt;
* });&lt;br /&gt;
*************************************************************** */&lt;br /&gt;
/**&lt;br /&gt;
* Gets the Ajax Call Parameters&lt;br /&gt;
*/&lt;br /&gt;
$ajax = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP(&amp;#039;request&amp;#039;);&lt;br /&gt;
/**&lt;br /&gt;
* Set Vendor and Extension Name&lt;br /&gt;
*&lt;br /&gt;
* Vendor Name like your Vendor Name in namespaces&lt;br /&gt;
* ExtensionName in upperCamelCase&lt;br /&gt;
*/&lt;br /&gt;
$ajax[&amp;#039;vendor&amp;#039;] = &amp;#039;T3Developer&amp;#039;;&lt;br /&gt;
$ajax[&amp;#039;extensionName&amp;#039;] = &amp;#039;ProjectsAndTasks&amp;#039;;&lt;br /&gt;
/**&lt;br /&gt;
* @var $TSFE \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController&lt;br /&gt;
*/&lt;br /&gt;
$TSFE = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(&amp;#039;TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController&amp;#039;, $TYPO3_CONF_VARS, 0, 0);&lt;br /&gt;
\TYPO3\CMS\Frontend\Utility\EidUtility::initLanguage();&lt;br /&gt;
// Get FE User Information&lt;br /&gt;
$TSFE-&amp;gt;initFEuser();&lt;br /&gt;
// Important: no Cache for Ajax stuff&lt;br /&gt;
$TSFE-&amp;gt;set_no_cache();&lt;br /&gt;
//$TSFE-&amp;gt;checkAlternativCoreMethods();&lt;br /&gt;
$TSFE-&amp;gt;checkAlternativeIdMethods();&lt;br /&gt;
$TSFE-&amp;gt;determineId();&lt;br /&gt;
$TSFE-&amp;gt;initTemplate();&lt;br /&gt;
$TSFE-&amp;gt;getConfigArray();&lt;br /&gt;
\TYPO3\CMS\Core\Core\Bootstrap::getInstance()-&amp;gt;loadConfigurationAndInitialize();&lt;br /&gt;
$TSFE-&amp;gt;cObj = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(&amp;#039;TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer&amp;#039;);&lt;br /&gt;
$TSFE-&amp;gt;settingLanguage();&lt;br /&gt;
$TSFE-&amp;gt;settingLocale();&lt;br /&gt;
/**&lt;br /&gt;
* Initialize Database&lt;br /&gt;
*/&lt;br /&gt;
\TYPO3\CMS\Frontend\Utility\EidUtility::connectDB();&lt;br /&gt;
/**&lt;br /&gt;
* @var $objectManager \TYPO3\CMS\Extbase\Object\ObjectManager&lt;br /&gt;
*/&lt;br /&gt;
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(&amp;#039;TYPO3\CMS\Extbase\Object\ObjectManager&amp;#039;);&lt;br /&gt;
/**&lt;br /&gt;
* Initialize Extbase bootstap&lt;br /&gt;
*/&lt;br /&gt;
$bootstrapConf[&amp;#039;extensionName&amp;#039;] = $ajax[&amp;#039;extensionName&amp;#039;];&lt;br /&gt;
$bootstrapConf[&amp;#039;pluginName&amp;#039;] = $ajax[&amp;#039;pluginName&amp;#039;];&lt;br /&gt;
$bootstrap = new TYPO3\CMS\Extbase\Core\Bootstrap();&lt;br /&gt;
$bootstrap-&amp;gt;initialize($bootstrapConf);&lt;br /&gt;
$bootstrap-&amp;gt;cObj = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(&amp;#039;tslib_cObj&amp;#039;);&lt;br /&gt;
/**&lt;br /&gt;
* Build the request&lt;br /&gt;
*/&lt;br /&gt;
$request = $objectManager-&amp;gt;get(&amp;#039;TYPO3\CMS\Extbase\Mvc\Request&amp;#039;);&lt;br /&gt;
$request-&amp;gt;setControllerVendorName($ajax[&amp;#039;vendor&amp;#039;]);&lt;br /&gt;
$request-&amp;gt;setcontrollerExtensionName($ajax[&amp;#039;extensionName&amp;#039;]);&lt;br /&gt;
$request-&amp;gt;setPluginName($ajax[&amp;#039;pluginName&amp;#039;]);&lt;br /&gt;
$request-&amp;gt;setControllerName($ajax[&amp;#039;controller&amp;#039;]);&lt;br /&gt;
$request-&amp;gt;setControllerActionName($ajax[&amp;#039;action&amp;#039;]);&lt;br /&gt;
$request-&amp;gt;setArguments($ajax[&amp;#039;arguments&amp;#039;]);&lt;br /&gt;
$response = $objectManager-&amp;gt;create(&amp;#039;TYPO3\CMS\Extbase\Mvc\ResponseInterface&amp;#039;);&lt;br /&gt;
$dispatcher = $objectManager-&amp;gt;get(&amp;#039;TYPO3\CMS\Extbase\Mvc\Dispatcher&amp;#039;);&lt;br /&gt;
$dispatcher-&amp;gt;dispatch($request, $response);&lt;br /&gt;
echo $response-&amp;gt;getContent();&lt;br /&gt;
//die();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mehrere Modelle in einem View ==&lt;br /&gt;
=== Übergabe mehrerer Objekte aus einem View ===&lt;br /&gt;
In Fluid&lt;br /&gt;
 &amp;lt;f:link.action action=&amp;quot;newMetadevice&amp;quot; arguments=&amp;quot;{rma : rma, device : device}&amp;quot;&amp;gt;add&amp;lt;/f:link.action&amp;gt;&lt;br /&gt;
Im Controller&lt;br /&gt;
1. Direkt im Header&lt;br /&gt;
 public function createDeviceAction(\Geobit\Gbrma\Domain\Model\Rma $rma,\Geobit\Gbrma\Domain\Model\Device $device){...}&lt;br /&gt;
Hier können auch komplette Objekte übergeben werden&lt;br /&gt;
2. Im Controller mit getArgument()&lt;br /&gt;
 $deviceClassUid = intval($this-&amp;gt;request-&amp;gt;getArgument(&amp;#039;deviceClassUid&amp;#039;));&lt;br /&gt;
Hier werden nur Get-Post Variablen ausgelesen wie früher die piVars.&lt;br /&gt;
&lt;br /&gt;
=== Datenübergabe in Sessions ===&lt;br /&gt;
In diesem Beispiel werden Datenobjekte als serialisierter String in einer Session gespeichert.&lt;br /&gt;
&lt;br /&gt;
http://stackoverflow.com/questions/27821750/multiple-objects-in-one-fluid-form (2015-03)&lt;br /&gt;
&lt;br /&gt;
In order to &amp;#039;&amp;#039;&amp;#039;pass non persistent objects between multiple actions&amp;#039;&amp;#039;&amp;#039;, I would suggest that you store the objects serialized in a TYPO3 session variable. Doing so, you can restore the objects in the target action.&lt;br /&gt;
&lt;br /&gt;
Below you find a working example which can also be found here. https://github.com/derhansen/extbase_validation_new_pm/blob/master/Classes/Controller/MultipleStepsController.php&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
namespace derhansen\ValidationExamplesNew\Controller;&lt;br /&gt;
&lt;br /&gt;
/***************************************************************&lt;br /&gt;
 *  Copyright notice&lt;br /&gt;
 *&lt;br /&gt;
 *  (c) 2013 Torben Hansen &amp;lt;derhansen@gmail.com&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 *  All rights reserved&lt;br /&gt;
 *&lt;br /&gt;
 *  This script is part of the TYPO3 project. The TYPO3 project is&lt;br /&gt;
 *  free software; you can redistribute it and/or modify&lt;br /&gt;
 *  it under the terms of the GNU General Public License as published by&lt;br /&gt;
 *  the Free Software Foundation; either version 3 of the License, or&lt;br /&gt;
 *  (at your option) any later version.&lt;br /&gt;
 *&lt;br /&gt;
 *  The GNU General Public License can be found at&lt;br /&gt;
 *  http://www.gnu.org/copyleft/gpl.html.&lt;br /&gt;
 *&lt;br /&gt;
 *  This script is distributed in the hope that it will be useful,&lt;br /&gt;
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;
 *  GNU General Public License for more details.&lt;br /&gt;
 *&lt;br /&gt;
 *  This copyright notice MUST APPEAR in all copies of the script!&lt;br /&gt;
 ***************************************************************/&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Multiple Steps Controller&lt;br /&gt;
 *&lt;br /&gt;
 * @package validation_examples_new&lt;br /&gt;
 * @license http://www.gnu.org/licenses/gpl.html GNU General Public License, version 3 or later&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
class MultipleStepsController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * addressdataRepository&lt;br /&gt;
     *&lt;br /&gt;
     * @var \derhansen\ValidationExamplesNew\Domain\Repository\AddressdataRepository&lt;br /&gt;
     * @inject&lt;br /&gt;
     */&lt;br /&gt;
    protected $addressdataRepository;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * API Service&lt;br /&gt;
     *&lt;br /&gt;
     * @var \derhansen\ValidationExamplesNew\Service\ExternalApiService&lt;br /&gt;
     * @inject&lt;br /&gt;
     */&lt;br /&gt;
    protected $apiService;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Step1&lt;br /&gt;
     *&lt;br /&gt;
     * @param \derhansen\ValidationExamplesNew\Domain\Model\Step1Data $step1data&lt;br /&gt;
     * @dontvalidate $step1data&lt;br /&gt;
     */&lt;br /&gt;
    public function step1Action(\derhansen\ValidationExamplesNew\Domain\Model\Step1Data $step1data = NULL) {&lt;br /&gt;
        /* Check if step1data is available in session */&lt;br /&gt;
        if ($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;#039;ses&amp;#039;, &amp;#039;step1data&amp;#039;) &amp;amp;&amp;amp; $step1data == NULL) {&lt;br /&gt;
            $step1data = unserialize($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;#039;ses&amp;#039;, &amp;#039;step1data&amp;#039;));&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $this-&amp;gt;view-&amp;gt;assign(&amp;#039;step1data&amp;#039;, $step1data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Step1 redirect action&lt;br /&gt;
     *&lt;br /&gt;
     * @param \derhansen\ValidationExamplesNew\Domain\Model\Step1Data $step1data&lt;br /&gt;
     */&lt;br /&gt;
    public function step1redirectAction(\derhansen\ValidationExamplesNew\Domain\Model\Step1Data $step1data) {&lt;br /&gt;
        $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;setKey(&amp;#039;ses&amp;#039;, &amp;#039;step1data&amp;#039;, serialize($step1data));&lt;br /&gt;
        $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;storeSessionData();&lt;br /&gt;
&lt;br /&gt;
        $this-&amp;gt;redirect(&amp;#039;step2&amp;#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Step2&lt;br /&gt;
     *&lt;br /&gt;
     * @param \derhansen\ValidationExamplesNew\Domain\Model\Step2Data $step2data&lt;br /&gt;
     * @dontvalidate $step2data&lt;br /&gt;
     */&lt;br /&gt;
    public function step2Action(\derhansen\ValidationExamplesNew\Domain\Model\Step2Data $step2data = NULL) {&lt;br /&gt;
        /* Check if step2data is available in session */&lt;br /&gt;
        if ($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;#039;ses&amp;#039;, &amp;#039;step2data&amp;#039;) &amp;amp;&amp;amp; $step2data == NULL) {&lt;br /&gt;
            $step2data = unserialize($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;#039;ses&amp;#039;, &amp;#039;step2data&amp;#039;));&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /* Set external validations errors if available */&lt;br /&gt;
        $this-&amp;gt;setApiValidationErrors(&amp;#039;step2&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        $this-&amp;gt;view-&amp;gt;assign(&amp;#039;step2data&amp;#039;, $step2data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Step2 redirect action&lt;br /&gt;
     *&lt;br /&gt;
     * @param \derhansen\ValidationExamplesNew\Domain\Model\Step2Data $step2data&lt;br /&gt;
     */&lt;br /&gt;
    public function step2redirectAction(\derhansen\ValidationExamplesNew\Domain\Model\Step2Data $step2data) {&lt;br /&gt;
        $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;setKey(&amp;#039;ses&amp;#039;, &amp;#039;step2data&amp;#039;, serialize($step2data));&lt;br /&gt;
        $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;storeSessionData();&lt;br /&gt;
&lt;br /&gt;
        $this-&amp;gt;redirect(&amp;#039;step3&amp;#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Step3&lt;br /&gt;
     *&lt;br /&gt;
     * @param \derhansen\ValidationExamplesNew\Domain\Model\Step3Data $step3data&lt;br /&gt;
     * @dontvalidate $step3data&lt;br /&gt;
     */&lt;br /&gt;
    public function step3Action(\derhansen\ValidationExamplesNew\Domain\Model\Step3Data $step3data = NULL) {&lt;br /&gt;
        /* Check if step3data is available in session */&lt;br /&gt;
        if ($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;#039;ses&amp;#039;, &amp;#039;step3data&amp;#039;) &amp;amp;&amp;amp; $step3data == NULL) {&lt;br /&gt;
            $step3data = unserialize($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;#039;ses&amp;#039;, &amp;#039;step3data&amp;#039;));&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        /* Set external validations errors if available */&lt;br /&gt;
        $this-&amp;gt;setApiValidationErrors(&amp;#039;step3&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
        $this-&amp;gt;view-&amp;gt;assign(&amp;#039;step3data&amp;#039;, $step3data);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Step3 redirect action&lt;br /&gt;
     *&lt;br /&gt;
     * @param \derhansen\ValidationExamplesNew\Domain\Model\Step3Data $step3data&lt;br /&gt;
     */&lt;br /&gt;
    public function step3redirectAction(\derhansen\ValidationExamplesNew\Domain\Model\Step3Data $step3data) {&lt;br /&gt;
        $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;setKey(&amp;#039;ses&amp;#039;, &amp;#039;step3data&amp;#039;, serialize($step3data));&lt;br /&gt;
        $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;storeSessionData();&lt;br /&gt;
&lt;br /&gt;
        $this-&amp;gt;redirect(&amp;#039;create&amp;#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Create Action&lt;br /&gt;
     *&lt;br /&gt;
     * @return void&lt;br /&gt;
     */&lt;br /&gt;
    public function createAction() {&lt;br /&gt;
        $addressdata = $this-&amp;gt;getAddressdataFromSession();&lt;br /&gt;
&lt;br /&gt;
        /* get validation results from API */&lt;br /&gt;
        $apiresults = $this-&amp;gt;apiService-&amp;gt;validateMultipleSteps($addressdata);&lt;br /&gt;
        if (count($apiresults) &amp;gt; 0) {&lt;br /&gt;
            /* Save results to a session variable */&lt;br /&gt;
            $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;setKey(&amp;#039;ses&amp;#039;, &amp;#039;apiresults&amp;#039;, $apiresults);&lt;br /&gt;
            $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;storeSessionData();&lt;br /&gt;
&lt;br /&gt;
            /* Redirect to step with validation errors */&lt;br /&gt;
            if (array_key_exists(&amp;#039;step2&amp;#039;, $apiresults)) {&lt;br /&gt;
                $this-&amp;gt;redirect(&amp;#039;step2&amp;#039;);&lt;br /&gt;
            }&lt;br /&gt;
            if (array_key_exists(&amp;#039;step3&amp;#039;, $apiresults)) {&lt;br /&gt;
                $this-&amp;gt;redirect(&amp;#039;step3&amp;#039;);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        $this-&amp;gt;addressdataRepository-&amp;gt;add($addressdata);&lt;br /&gt;
        $this-&amp;gt;cleanUpSessionData();&lt;br /&gt;
&lt;br /&gt;
        $this-&amp;gt;view-&amp;gt;assign(&amp;#039;message&amp;#039;, &amp;#039;Addressdata has been created&amp;#039;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Collects the addressdata from the multiple steps form stored in session variables&lt;br /&gt;
     * and returns an addressdata object.&lt;br /&gt;
     *&lt;br /&gt;
     * @return \derhansen\ValidationExamplesNew\Domain\Model\Addressdata&lt;br /&gt;
     */&lt;br /&gt;
    protected function getAddressdataFromSession() {&lt;br /&gt;
        /** @var \derhansen\ValidationExamplesNew\Domain\Model\Step1Data $step1data */&lt;br /&gt;
        $step1data = unserialize($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;#039;ses&amp;#039;, &amp;#039;step1data&amp;#039;));&lt;br /&gt;
&lt;br /&gt;
        /** @var \derhansen\ValidationExamplesNew\Domain\Model\Step2Data $step2data */&lt;br /&gt;
        $step2data = unserialize($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;#039;ses&amp;#039;, &amp;#039;step2data&amp;#039;));&lt;br /&gt;
&lt;br /&gt;
        /** @var \derhansen\ValidationExamplesNew\Domain\Model\Step3Data $step3data */&lt;br /&gt;
        $step3data = unserialize($GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;#039;ses&amp;#039;, &amp;#039;step3data&amp;#039;));&lt;br /&gt;
&lt;br /&gt;
        /** @var \derhansen\ValidationExamplesNew\Domain\Model\Addressdata $addressData */&lt;br /&gt;
        $addressData = $this-&amp;gt;objectManager-&amp;gt;get(&amp;#039;derhansen\ValidationExamplesNew\Domain\Model\Addressdata&amp;#039;);&lt;br /&gt;
        $addressData-&amp;gt;setFirstname($step1data-&amp;gt;getFirstname());&lt;br /&gt;
        $addressData-&amp;gt;setLastname($step1data-&amp;gt;getLastname());&lt;br /&gt;
        $addressData-&amp;gt;setStreet($step2data-&amp;gt;getStreet());&lt;br /&gt;
        $addressData-&amp;gt;setStreetnr($step2data-&amp;gt;getStreetnr());&lt;br /&gt;
        $addressData-&amp;gt;setZip($step3data-&amp;gt;getZip());&lt;br /&gt;
        $addressData-&amp;gt;setCity($step3data-&amp;gt;getCity());&lt;br /&gt;
&lt;br /&gt;
        return $addressData;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Removes all session variables from the multiple steps form&lt;br /&gt;
     *&lt;br /&gt;
     * @return void&lt;br /&gt;
     */&lt;br /&gt;
    protected function cleanUpSessionData() {&lt;br /&gt;
        $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;setKey(&amp;#039;ses&amp;#039;, &amp;#039;step1data&amp;#039;, &amp;#039;&amp;#039;);&lt;br /&gt;
        $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;setKey(&amp;#039;ses&amp;#039;, &amp;#039;step2data&amp;#039;, &amp;#039;&amp;#039;);&lt;br /&gt;
        $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;setKey(&amp;#039;ses&amp;#039;, &amp;#039;step3data&amp;#039;, &amp;#039;&amp;#039;);&lt;br /&gt;
        $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;setKey(&amp;#039;ses&amp;#039;, &amp;#039;apiresults&amp;#039;, &amp;#039;&amp;#039;);&lt;br /&gt;
        $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;storeSessionData();&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * Sets validation errors for fields in the given step&lt;br /&gt;
     *&lt;br /&gt;
     * @param string $step The step&lt;br /&gt;
     * @return void&lt;br /&gt;
     */&lt;br /&gt;
    protected function setApiValidationErrors($step) {&lt;br /&gt;
        $apiresults = $GLOBALS[&amp;#039;TSFE&amp;#039;]-&amp;gt;fe_user-&amp;gt;getKey(&amp;#039;ses&amp;#039;, &amp;#039;apiresults&amp;#039;);&lt;br /&gt;
        if (array_key_exists($step, $apiresults)) {&lt;br /&gt;
            /* Set Form Errors manually  - get results from property mapper and add new errors */&lt;br /&gt;
            $result = $this-&amp;gt;getControllerContext()-&amp;gt;getRequest()-&amp;gt;getOriginalRequestMappingResults();&lt;br /&gt;
&lt;br /&gt;
            /* Add validation errors */&lt;br /&gt;
            foreach ($apiresults[$step] as $key =&amp;gt; $value) {&lt;br /&gt;
                $error = $this-&amp;gt;objectManager-&amp;gt;get(&amp;#039;TYPO3\\CMS\\Extbase\\Validation\Error&amp;#039;,&lt;br /&gt;
                    $apiresults[$step][$key], time());&lt;br /&gt;
                $result-&amp;gt;forProperty($step . &amp;#039;data.&amp;#039; . $key)-&amp;gt;addError($error);&lt;br /&gt;
            }&lt;br /&gt;
            $this-&amp;gt;getControllerContext()-&amp;gt;getRequest()-&amp;gt;setOriginalRequestMappingResults($result);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>87.165.0.123</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Narda&amp;diff=21271</id>
		<title>Narda</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Narda&amp;diff=21271"/>
		<updated>2015-10-23T17:35:21Z</updated>

		<summary type="html">&lt;p&gt;87.165.0.123: /* Änderungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Überblick ==&lt;br /&gt;
RMA und ACC liegen auf Geo-bit Server und sind per iFrame eingebunden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;940&amp;quot; height=&amp;quot;1000&amp;quot; src=&amp;quot;/1/RMA/rma_select_01.php?req_art=rep_cal&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;940&amp;quot; height=&amp;quot;1000&amp;quot; src=&amp;quot;/1/RMA/rma_select_01.php?req_art=warranty&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;940&amp;quot; height=&amp;quot;1000&amp;quot; src=&amp;quot;/1/acc-2/login.php&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
direkt erreichbar über:&lt;br /&gt;
&lt;br /&gt;
 http://narda-sts.com.w00eb738.kasserver.com/1/RMA/rma_select_01.php?req_art=rep_cal&lt;br /&gt;
 http://narda-sts.com.w00eb738.kasserver.com/1/RMA/rma_select_01.php?req_art=warranty&lt;br /&gt;
 http://narda-sts.com.w00eb738.kasserver.com/1/acc-2/login.php&lt;br /&gt;
&lt;br /&gt;
== TYPO3 RMA Extension ==&lt;br /&gt;
=== Dokumentation ===&lt;br /&gt;
Narda RMA Prozess [[Dokumentation gbrma]]&lt;br /&gt;
&lt;br /&gt;
=== Zus. Leistungen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mail an Admin 6h / Mailtemplates&lt;br /&gt;
pdf Generierung &lt;br /&gt;
Vorfilterung nach Geräteklasse + Auswahlkontrolle&lt;br /&gt;
Admin Ansicht benötigt ???&lt;br /&gt;
Zusätzliche States&lt;br /&gt;
Geräteliste zum Aufklappen ab 5 Zeilen&lt;br /&gt;
Templatevarianten für&lt;br /&gt;
SRM / IDA&lt;br /&gt;
NBM&lt;br /&gt;
Detailansicht für beendete RMA&lt;br /&gt;
Express Calibration&lt;br /&gt;
fpdf Integration für acc&lt;br /&gt;
Bespr. Narda 2h&lt;br /&gt;
Setting up Testing Area&lt;br /&gt;
Klassen müssen ebenfalls einer Familie zugeordnet werden&lt;br /&gt;
Checkboxen (calib, mod/upgr., repair, no service, nur dann anzeigen, wenn sinnvoll&lt;br /&gt;
Checkboxen komplett weg für ACC&lt;br /&gt;
Regel für mehrere Basedevices erlaubt (Radman)&lt;br /&gt;
Clientnr. in fe_user&lt;br /&gt;
Zeige Rmas by Client nr.&lt;br /&gt;
Modification ausblenden wenn keine vorhanden&lt;br /&gt;
Auslagerung von Texten in Lokalisierungstextfiles&lt;br /&gt;
Möglichkeit zur Auswahl von Texten je nach Geräteklasse&lt;br /&gt;
Erklärungstexte für Status&lt;br /&gt;
ACC Filterung auf Geräteklassenebene&lt;br /&gt;
Mail an Admin bei Delete&lt;br /&gt;
Mapping des ERP Exports und checken der RMAs&lt;br /&gt;
Test Scheduler einrichten&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Änderungen ===&lt;br /&gt;
* Client ID Mode -&amp;gt; Speichern der Client ID implementieren - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Fehler beim &amp;#039;&amp;#039;&amp;#039;Import&amp;#039;&amp;#039;&amp;#039; wenn Leerzeilen enthalten - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Feature: Statt RMA Date immer &amp;#039;&amp;#039;&amp;#039;Datum der letzten Status Aktualisierung&amp;#039;&amp;#039;&amp;#039;. 1. Angelegt in T3 2. Datum der letzten Bearbeitung aus ERP Datei - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Model erweitern (tstamp) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Templates auf tstamp statt cdate - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Anpassen im Code - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: &amp;#039;&amp;#039;&amp;#039;Datatables&amp;#039;&amp;#039;&amp;#039; Skript für Listenansicht - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Validierungen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Keine Beschreibung bei Repair eingegeben - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Kein Service Request gewählt - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Inspection Repair und No Service nicht gemeinsam anwählbar - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** F: Wenn Repair dann keine Kalibrierung (ist beinhaltet) -&amp;gt; Änderung Calib und Repair möglich - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** F: Wenn Kalibrierung dann kein Repair -&amp;gt; ist doch möglich - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: Am Ende Auswahlfeld Expresskalibrierung aber nur wenn Kalibrierung ausgewählt ist &amp;#039;&amp;#039;&amp;#039;Todo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: + Textfeld (Additional information) -&amp;gt; &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039; wird immer angezeigt auch wenn keine Expresskalib. &amp;#039;&amp;#039;&amp;#039; Evtl. anpassen (nach Rücksprache)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Beispielbilder&amp;#039;&amp;#039;&amp;#039; &amp;quot;Wo finde ich die Seriennummer&amp;quot; in Add Metadevice - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Bug: Add Main Device, Add 2.Device, Zurück auf Main Device Tab =&amp;gt; &amp;#039;&amp;#039;&amp;#039;Tabs&amp;#039;&amp;#039;&amp;#039; werden nicht mehr richtig dargestellt - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Nichtssagende &amp;#039;&amp;#039;&amp;#039;Fehlermeldung&amp;#039;&amp;#039;&amp;#039; in AddMetadevice wenn die Validierung scheitert (Seite wird erneut angezeigt) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Feature: NewFormFields soll Auswahl für Acc nur anbieten wenn Userrecht vorliegt (Safety) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMA Doku&amp;#039;&amp;#039;&amp;#039; -&amp;gt; z.T. aus E-Mails übernehmen - &amp;#039;&amp;#039;&amp;#039;TODO&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Fehlermeldungen von Extbase&amp;#039;&amp;#039;&amp;#039; verhindern bei Browserbedienung (vor und zurück Buttons) - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Wenn &amp;#039;&amp;#039;&amp;#039;RMA nicht vorhanden&amp;#039;&amp;#039;&amp;#039; (z.B. gelöscht) dann aussagekräftige Fehlermeldung) &amp;#039;&amp;#039;&amp;#039; ToDo &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Feature: &amp;#039;&amp;#039;&amp;#039;RMA gelöscht Mail&amp;#039;&amp;#039;&amp;#039; nur dann wenn Status 2 erreicht (also wenn schon eine Info bei Narda ankam) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMA Nummern&amp;#039;&amp;#039;&amp;#039; werden nur als gelöscht markiert bzw. eine Nummer wird nie mehrfach vergeben. - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ACC&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;PDF&amp;#039;&amp;#039;&amp;#039; muß auch an Kunden (FE-User) gesendet werden - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMA löschen Bestätigung&amp;#039;&amp;#039;&amp;#039; (JS) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* SRM Auswahl der Geräte -&amp;gt; richtige Tabs aktiv -&amp;gt; bei SRM 3 Tabs &amp;quot;rf-cable&amp;quot; - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* E-Mail RMA Type weg, RMA Prominent oben, evtl. im Betreff - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Zuerst Device Title dann SN - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Umbenennungen&lt;br /&gt;
** Express Order -&amp;gt; Express Calibration Service - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Factory Calibration / Repair -&amp;gt; ohne Warranty Request - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Modification Texte 5 und 6 - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: ClientID Mode -&amp;gt; User mit der selben Client ID können RMAs anderer User sehen - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Client Id als Merkmal im User - &amp;#039;&amp;#039;&amp;#039; ToDo &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Client ID muß beim abspreichern vorliegen und mit abgespeichert werden.&lt;br /&gt;
&lt;br /&gt;
== Internet Präsenz Narda ==&lt;br /&gt;
&lt;br /&gt;
Mischung aus verschiedenen Systemen&lt;br /&gt;
&lt;br /&gt;
Hauptdomain: www.narda-sts.de&lt;br /&gt;
&lt;br /&gt;
=== Content Management System ===&lt;br /&gt;
Frontend ist TYPO3 allerdings werden einige Download-Listen über ein php-Skript generiert.&lt;br /&gt;
Diese Inhalte werden über ein eigenes Tool realisiert.&lt;br /&gt;
&lt;br /&gt;
=== FTP-Zugänge ===&lt;br /&gt;
&lt;br /&gt;
Die Seite würd über vodafone gehostet. Vodafone der Zugriff erfolgt Zentral über&lt;br /&gt;
ftp.vodafone-ip.de&lt;br /&gt;
&lt;br /&gt;
Im Admin Bereich von Vodafone kann man FTP Benutzer anlegen.&lt;br /&gt;
Der Zugriff erfolgt dann über [benutzername]%[domainname]&lt;br /&gt;
Also z.B. aszwei%narda-sts.de&lt;br /&gt;
&lt;br /&gt;
=== Server Verwaltung ===&lt;br /&gt;
Hier kann man FTP Zugänge anlegen, auf phpMyAdmin zugreifen etc.&lt;br /&gt;
Login unter: https://webadmin.arcor.net/Secure/&lt;br /&gt;
&lt;br /&gt;
=== phpMyAdmin ===&lt;br /&gt;
Direkt zu erreichen unter:&lt;br /&gt;
&lt;br /&gt;
== Eigenes Admin System ==&lt;br /&gt;
Zur Verwaltung von downloads, etc.&lt;br /&gt;
http://www.narda-sts.de/admin/&lt;br /&gt;
&lt;br /&gt;
Greift auf eine separate Datenbank zu, in der die Daten abgelegt sind.&lt;br /&gt;
&lt;br /&gt;
==== Anpassen eines Software Downloads ====&lt;br /&gt;
Um einen Download anzupassen spielt man die Datei per FTP unterhalb des Verzeichnisses&lt;br /&gt;
/download/software/&lt;br /&gt;
&lt;br /&gt;
Als nächstes öffnet man das Admin Tool und geht in den Menüpunkt&lt;br /&gt;
SoftwareUpdate (beta)&lt;br /&gt;
Dort kann man die Release Nummer anpassen (z.B. 2011) und aus dem Dropdownfeld die passende Datei auswählen.&lt;br /&gt;
&lt;br /&gt;
==== Anlegen eines neuen Downloads ====&lt;br /&gt;
Hierbei muß man beachten daß in TYPO3 ein php Schnipsel eingebunden wird.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  include(&amp;quot;fileadmin/user_upload/scripts/db_func.inc&amp;quot;);&lt;br /&gt;
  print (get_software_information(&amp;quot;EFC_HF_Demo_EN&amp;quot;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gibt einen Download Block inkl. Link und Beschreibung aus.&lt;br /&gt;
Wobei als Parameter der Name im Datenbankfeld re_call übergeben wird. Dieser wird beim Anlegen der Software manuell Vergeben&lt;br /&gt;
&lt;br /&gt;
== Sales Partner Extranet ==&lt;br /&gt;
www.narda-sts.de/sp (oder /vp)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RMA Garantie und Rücklaufgeräte ==&lt;br /&gt;
Dies wird über Vertragspartner erledigt, und es gibt ein weiteres Tool. Der User holt sich ein RMA Ticket (Online Formular) Je nach Region wird dann an den Vertriebspartner eine E-Mail versendet. Außerdem an Narda. &lt;br /&gt;
&lt;br /&gt;
Auf dem Serverl liegt es im Ordner /1/RMA/&lt;br /&gt;
&lt;br /&gt;
Im Quelltext sind auch etliche E-Mail Adressen hinterlegt die auf Mails zu Aichele und dem Programmierer hinweisen. Das müßte mal ausgemistet werden.&lt;br /&gt;
&lt;br /&gt;
=== Kontaktdaten der Vertriebspartner ===&lt;br /&gt;
Diese sind in der Datenbank in der Tabelle &amp;#039;&amp;#039;&amp;#039; rma_requests&amp;#039;&amp;#039;&amp;#039; hinterlegt.&lt;br /&gt;
Es gibt auch eine Tabelle Vertriebspartner. Ist aber nicht ganz klar wann diese benutzt werden.&lt;br /&gt;
Ich habe noch kein Administrationstool gefunden. Die Änderung kann aber direkt in der Datenbank erfolgen.&lt;br /&gt;
 &lt;br /&gt;
Edit:&lt;br /&gt;
&lt;br /&gt;
Vertriebspartner in der Tabelle vertriebspartner werden vom RMA Prozess Tool (und vom neuen acc Tool) genutzt.&lt;br /&gt;
&lt;br /&gt;
Es gibt außerdem eine Ausgabe der Vertriebspartner Adressen. Dabei werden über das Admin Tool (Narda Tool -&amp;gt; Partner Update) html Dateien geschrieben, die dann im Typo eingebunden sind. (Total umständlich). Es wird die Tabelle ??? genutzt.&lt;br /&gt;
&lt;br /&gt;
=== Funktionsweise technische Realisierung (PHP-Skripte) ===&lt;br /&gt;
Siehe MindMap&lt;br /&gt;
&lt;br /&gt;
Einstieg für den RMA Prozess ist der Link:&lt;br /&gt;
&lt;br /&gt;
 http://www.narda-sts.de/1/RMA/rma_select_01.php?req_art=rep_cal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In diesem Schritt wird die Länderauswahl angezeigt und die Art der Anfrege übergeben.&lt;br /&gt;
Nach der Länderauswahl sieht der link dann ungefähr so aus:&lt;br /&gt;
&lt;br /&gt;
https://ssl.arcor-secure.de/narda-sts.de/1/RMA/rma_persData_02.php?req_art=rep_cal&amp;amp;req_id=P20110214_gF164223&amp;amp;req_reg=2&lt;br /&gt;
&lt;br /&gt;
Es wird also eine req_id und req_reg Übergeben. Und die Persönlichen Daten abgefragt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RMA/rma_reCall.php&lt;br /&gt;
&lt;br /&gt;
== ACC Prozess ==&lt;br /&gt;
Für den ACC (Accredited Callbration) wurde das Tool komplett überarbeitet und entschlackt. Im Moment läuft es nicht auf dem Narda Server, sondern auf dem Geo-bit Server.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise zur Datenbank ===&lt;br /&gt;
Die Partner sind hier in der Tabelle Vertriebspartner hinterlegt. Sie Loggen sich mit ihrer ID und einem Passwort ein. Die Tabelle wurde ursprünglich kopiert und um einige Felder erweitert. &lt;br /&gt;
&lt;br /&gt;
Es können sich nur Partner anmelden die im Feld&lt;br /&gt;
&lt;br /&gt;
== Weitere Skripte ==&lt;br /&gt;
&lt;br /&gt;
Es sind einige weitere Skripte im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Funktionsübersicht von Produkten ===&lt;br /&gt;
/doc/fileadmin/user_upload/scripts/func_overview.inc.php&lt;br /&gt;
&lt;br /&gt;
Wird in Typo3 so aufgerufen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
 include(&amp;quot;fileadmin/user_upload/scripts/func_overview.inc.php&amp;quot;);&lt;br /&gt;
  $config_file = &amp;quot;typo3conf/localconf.php&amp;quot;;&lt;br /&gt;
  $image_path = &amp;quot;fileadmin/user_upload/products/personal_protection&amp;quot;;&lt;br /&gt;
  $page_id = 70; // ID DER UEBERGEORDNETEN SEITE&lt;br /&gt;
  print get_overview($page_id,$image_path,&amp;quot;Personal Monitor&amp;quot;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktion:&lt;br /&gt;
&lt;br /&gt;
* Liest die aktuelle Sprache aus dem L Parameter oder der RealURL Adresse&lt;br /&gt;
* Liest die pid der untergeordneten Seiten aus.&lt;br /&gt;
&lt;br /&gt;
=== Mailfunktion RMA / ACC ===&lt;br /&gt;
==== RMA ====&lt;br /&gt;
Es werden mehrere Mails generiert. &lt;br /&gt;
&lt;br /&gt;
1. Schritt User Registrierung =&amp;gt; Mail mit dem Ticket. Dieses enthält einen Link. Für die Geräteeingabe&lt;br /&gt;
Mailversand in &amp;#039;&amp;#039;&amp;#039;rma_persData_02.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
2. Schritt Versand der RMA Daten&lt;br /&gt;
 $html_mail_versand = send_html_mail($req_number,$req_ident_number,$req_art);&lt;br /&gt;
kommt aus &amp;#039;&amp;#039;&amp;#039;mail_html_function.inc.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==== ACC ====&lt;br /&gt;
Das Formular zur Eingabe liegt in &amp;#039;&amp;#039;&amp;#039;acc_form.ph&amp;#039;&amp;#039;&amp;#039;p Nach Absenden wird &amp;#039;&amp;#039;&amp;#039;acc_form_send.php&amp;#039;&amp;#039;&amp;#039; aufgerufen. In diesem wird die Mail über die Funktion &lt;br /&gt;
 $success = send_acc_mail($rma_num,$arrForm,$arrPartner); &lt;br /&gt;
versendet. Die Funktion wird in &amp;#039;&amp;#039;&amp;#039;lib/acal_functions.php&amp;#039;&amp;#039;&amp;#039; zur Verfügung gestellt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FORMULAR        MAILVERSAND / FEEDBACK&lt;br /&gt;
acc_form.php -&amp;gt; acc_form_send.php        &amp;lt;- includes acal_functions.php (send_acc_mail)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>87.165.0.123</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=MySQL_-_Tips_und_Tricks&amp;diff=21270</id>
		<title>MySQL - Tips und Tricks</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=MySQL_-_Tips_und_Tricks&amp;diff=21270"/>
		<updated>2015-10-23T17:28:18Z</updated>

		<summary type="html">&lt;p&gt;87.165.0.123: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Text in Zahlen umwandeln ==&lt;br /&gt;
http://stackoverflow.com/questions/11808573/sql-order-string-as-number (2015-10)&lt;br /&gt;
&lt;br /&gt;
Cast your column value to an integer &amp;#039;&amp;#039;&amp;#039;explicitly&amp;#039;&amp;#039;&amp;#039; with&lt;br /&gt;
 &lt;br /&gt;
select col from yourtable&lt;br /&gt;
 order by cast(col as unsigned)&lt;br /&gt;
&lt;br /&gt;
or &amp;#039;&amp;#039;&amp;#039;implicitly&amp;#039;&amp;#039;&amp;#039; for instance with a mathematical operation which forces a conversion to number&lt;br /&gt;
&lt;br /&gt;
 select col from yourtable&lt;br /&gt;
 order by col * 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Joins und GroupBy ==&lt;br /&gt;
Mit Joins kann man verknüpfte Tabellen abfragen. Mit groupby bündelt man doppelte Einträge. Mit group_concat kann man mehrere Werte aus den verknüpften Tabellen (z.B. bei mehrerern Kategorien) zusammenfassen.&lt;br /&gt;
=== Beispiel News ===&lt;br /&gt;
Quelle: http://www.typo-script.de/mysql-script/mysql-typo3-beispiel-zu-group_concat-mit-join (2013-10)&lt;br /&gt;
&lt;br /&gt;
Folgende Abfrage soll umgesetzt werden: Zeige mir alle Datensätze, die zu einer Kategorie gehören. Konkret in diesem Fall, alle Newsbeiträge zu allen Newskategorien.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
  tt_news_cat.uid AS cat_id,&lt;br /&gt;
  GROUP_CONCAT(DISTINCT tt_news.uid ORDER BY tt_news.uid DESC SEPARATOR &amp;#039;,&amp;#039;) AS news_id&lt;br /&gt;
&lt;br /&gt;
FROM tt_news&lt;br /&gt;
  LEFT OUTER JOIN tt_news_cat_mm ON tt_news.uid = tt_news_cat_mm.uid_local&lt;br /&gt;
  LEFT OUTER JOIN tt_news_cat ON tt_news_cat.uid = tt_news_cat_mm.uid_foreign&lt;br /&gt;
&lt;br /&gt;
GROUP BY tt_news_cat.uid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
+----+----------------+&lt;br /&gt;
| cat_id | news_id    |&lt;br /&gt;
+----+----------------+&lt;br /&gt;
|  1     | 1,2,3,4    |&lt;br /&gt;
|  2     | 5,6        |&lt;br /&gt;
|  3     | 7,8,9,10   |&lt;br /&gt;
|  4     | 11,12      |&lt;br /&gt;
+--------+------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Die Syntax der GROUP_CONCAT Funktion ist folgendermaßen aufgebaut:&lt;br /&gt;
GROUP_CONCAT([DISTINCT] expr [,expr ...]&lt;br /&gt;
             [ORDER BY {unsigned_integer | col_name | expr}&lt;br /&gt;
                 [ASC | DESC] [,col_name ...]]&lt;br /&gt;
             [SEPARATOR str_val])&lt;br /&gt;
Desweiteren sollte beachtet werden, das die maximale Zeichenanzahl der GROUP_CONCAT - Spalte auf eine Länge von 1024 Zeichen begrenzt ist. Sollte dies nicht ausreichen, kann man in der mysql.conf die Systemvariable group_concat_max_len an seine Bedürfnisse anpassen.&lt;br /&gt;
&lt;br /&gt;
== Abfragen mit Pivot Tabellen ==&lt;br /&gt;
http://stackoverflow.com/questions/12808189/setting-column-values-as-column-names-in-the-sql-query-result&lt;br /&gt;
&lt;br /&gt;
Pivot Abfragen kommen zum Einsatz, wenn Tabellen so aufgebaut sind, daß die Spaltennamen in der Tabelle drin sind. Eigentlich sollte man so etwas vermeiden, kommt aber z.B. beim Wordpress mit den Customfields vor. Es gibt keine Pivot Funktion in mySQL daher braucht man einen Workaround.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel: Tabelle:&lt;br /&gt;
id    col1     col2&lt;br /&gt;
----------------------&lt;br /&gt;
0      name    ax&lt;br /&gt;
0      name2   bx&lt;br /&gt;
0      name3   cx&lt;br /&gt;
1      name    dx&lt;br /&gt;
1      name2   ex&lt;br /&gt;
1      name2   fx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das Ergebnis sollte so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
id   name    name2     name3&lt;br /&gt;
0    ax      bx         cx&lt;br /&gt;
1    dx      ex         fx&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
So gehts:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT&lt;br /&gt;
  id,&lt;br /&gt;
  /* if col1 matches the name string of this CASE, return col2, otherwise return NULL */&lt;br /&gt;
  /* Then, the outer MAX() aggregate will eliminate all NULLs and collapse it down to one row per id */&lt;br /&gt;
  MAX(CASE WHEN (col1 = &amp;#039;name&amp;#039;) THEN col2 ELSE NULL END) AS name,&lt;br /&gt;
  MAX(CASE WHEN (col1 = &amp;#039;name2&amp;#039;) THEN col2 ELSE NULL END) AS name2,&lt;br /&gt;
  MAX(CASE WHEN (col1 = &amp;#039;name3&amp;#039;) THEN col2 ELSE NULL END) AS name3&lt;br /&gt;
FROM&lt;br /&gt;
  yourtable&lt;br /&gt;
GROUP BY id&lt;br /&gt;
ORDER BY id&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung: Es wird nach id gruppiert (GROUP BY) Über Case wird geschaut ob der Wert da ist. Wenn nicht NULL zurückgegeben. MAX schmeißt alle NULLer raus und sorgt dafür daß es nur eine Zeile pro id gibt.&lt;br /&gt;
&lt;br /&gt;
Das geht nur wenn man die gewünschten Spalten kennt. Die Spalten sind quasi statisch (hartcodiert). Wenn man die Spalten nicht kennt muß man das Statement dynamisch generieren:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SET @sql = NULL;&lt;br /&gt;
SELECT&lt;br /&gt;
  GROUP_CONCAT(DISTINCT&lt;br /&gt;
    CONCAT(&lt;br /&gt;
      &amp;#039;max(case when col1 = &amp;#039;&amp;#039;&amp;#039;,&lt;br /&gt;
      col1,&lt;br /&gt;
      &amp;#039;&amp;#039;&amp;#039; then col2 end) AS &amp;#039;,&lt;br /&gt;
      col1&lt;br /&gt;
    )&lt;br /&gt;
  ) INTO @sql&lt;br /&gt;
FROM yourtable;&lt;br /&gt;
&lt;br /&gt;
SET @sql = CONCAT(&amp;#039;SELECT id, &amp;#039;, @sql, &amp;#039; &lt;br /&gt;
                  FROM yourtable &lt;br /&gt;
                  GROUP BY id&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
PREPARE stmt FROM @sql;&lt;br /&gt;
EXECUTE stmt;&lt;br /&gt;
DEALLOCATE PREPARE stmt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Wert mit Werten aus einer Komma separierten Liste vergleichen==&lt;br /&gt;
&lt;br /&gt;
Gerade bei Typo3 hat man oft das Problem, das man eine id mit einem Datenbank Textfeld mit einer Liste von Werten die mit Komma getrennt vorliegen vergleichen will. Die Typo funktionen sind Performancefresser. Eleganter geht es mit einer geschickten MySQL Abfrage. &lt;br /&gt;
Beispiel finde den Wert 7 in der Liste des Feldes usergroup (da steht z.B. 3,5,7,8,9 drin)&lt;br /&gt;
&lt;br /&gt;
 WHERE CONCAT(&amp;#039;,&amp;#039;,usergroup,&amp;#039;,&amp;#039;) LIKE &amp;#039;%,7,%&amp;#039; &lt;br /&gt;
&lt;br /&gt;
oder: &lt;br /&gt;
 WHERE FIND_IN_SET(&amp;#039;7&amp;#039;,usergroup)&amp;gt;0 &lt;br /&gt;
== UPDATE mit Werten aus anderer Tabelle ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
aus: http://www.tutorials.de/forum/relationale-datenbanken-sql-mysql-oracle-db2-mssql/174881-mysql-update-mit-werten-aus-anderer-tabelle.html&lt;br /&gt;
&lt;br /&gt;
Datum des Zugriffs: 4.4.2008&lt;br /&gt;
&lt;br /&gt;
zunächst mal: Updates über mehrere Tabellen sind grundsätzlich &amp;quot;tricky&amp;quot; (siehe dazu die MySQL-Doku, speziell die Kommentare).&lt;br /&gt;
&lt;br /&gt;
Dann: Der Tabellen-Name &amp;quot;order&amp;quot; ist nicht sehr empfehlenswert, da der Interpreter diesen Namen gerne mit dem ORDER BY verwechselt, ergo muss der Tabellenname order immer als `order` geschrieben werden, sonst droht Syntax-Error.&lt;br /&gt;
&lt;br /&gt;
Ein weiteres Problem ist die Gruppen-Funktion MIN() ohne GROUP BY.&lt;br /&gt;
&lt;br /&gt;
So, jetzt 2 Lösungsvorschläge, einmal mit SubQuery (ab MySQL 4.1):&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE&lt;br /&gt;
 user AS u&lt;br /&gt;
LEFT JOIN&lt;br /&gt;
 (SELECT uid, MIN(datum) AS mindatum FROM `order` GROUP BY uid) AS o ON u.id = o.uid&lt;br /&gt;
SET&lt;br /&gt;
 u.createDate = o.mindatum&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
und einmal mit temporärer Tabelle (MySQL 4.0 und früher):&lt;br /&gt;
Code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DROP TABLE IF EXISTS tmp_order;&lt;br /&gt;
&lt;br /&gt;
CREATE TEMPORARY TABLE tmp_order TYPE = HEAP&lt;br /&gt;
 SELECT uid, MIN(datum) AS mindatum FROM `order` GROUP BY uid;&lt;br /&gt;
&lt;br /&gt;
UPDATE&lt;br /&gt;
 user&lt;br /&gt;
LEFT JOIN&lt;br /&gt;
 tmp_order ON user.id = tmp_order.uid&lt;br /&gt;
SET&lt;br /&gt;
 user.createDate = tmp_order.mindatum;&lt;br /&gt;
&lt;br /&gt;
DROP TABLE IF EXISTS tmp_order;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>87.165.0.123</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Narda&amp;diff=21269</id>
		<title>Narda</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Narda&amp;diff=21269"/>
		<updated>2015-10-23T17:25:51Z</updated>

		<summary type="html">&lt;p&gt;87.165.0.123: /* Zus. Leistungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Überblick ==&lt;br /&gt;
RMA und ACC liegen auf Geo-bit Server und sind per iFrame eingebunden:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;940&amp;quot; height=&amp;quot;1000&amp;quot; src=&amp;quot;/1/RMA/rma_select_01.php?req_art=rep_cal&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;940&amp;quot; height=&amp;quot;1000&amp;quot; src=&amp;quot;/1/RMA/rma_select_01.php?req_art=warranty&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=&amp;quot;940&amp;quot; height=&amp;quot;1000&amp;quot; src=&amp;quot;/1/acc-2/login.php&amp;quot;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
direkt erreichbar über:&lt;br /&gt;
&lt;br /&gt;
 http://narda-sts.com.w00eb738.kasserver.com/1/RMA/rma_select_01.php?req_art=rep_cal&lt;br /&gt;
 http://narda-sts.com.w00eb738.kasserver.com/1/RMA/rma_select_01.php?req_art=warranty&lt;br /&gt;
 http://narda-sts.com.w00eb738.kasserver.com/1/acc-2/login.php&lt;br /&gt;
&lt;br /&gt;
== TYPO3 RMA Extension ==&lt;br /&gt;
=== Dokumentation ===&lt;br /&gt;
Narda RMA Prozess [[Dokumentation gbrma]]&lt;br /&gt;
&lt;br /&gt;
=== Zus. Leistungen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Mail an Admin 6h / Mailtemplates&lt;br /&gt;
pdf Generierung &lt;br /&gt;
Vorfilterung nach Geräteklasse + Auswahlkontrolle&lt;br /&gt;
Admin Ansicht benötigt ???&lt;br /&gt;
Zusätzliche States&lt;br /&gt;
Geräteliste zum Aufklappen ab 5 Zeilen&lt;br /&gt;
Templatevarianten für&lt;br /&gt;
SRM / IDA&lt;br /&gt;
NBM&lt;br /&gt;
Detailansicht für beendete RMA&lt;br /&gt;
Express Calibration&lt;br /&gt;
fpdf Integration für acc&lt;br /&gt;
Bespr. Narda 2h&lt;br /&gt;
Setting up Testing Area&lt;br /&gt;
Klassen müssen ebenfalls einer Familie zugeordnet werden&lt;br /&gt;
Checkboxen (calib, mod/upgr., repair, no service, nur dann anzeigen, wenn sinnvoll&lt;br /&gt;
Checkboxen komplett weg für ACC&lt;br /&gt;
Regel für mehrere Basedevices erlaubt (Radman)&lt;br /&gt;
Clientnr. in fe_user&lt;br /&gt;
Zeige Rmas by Client nr.&lt;br /&gt;
Modification ausblenden wenn keine vorhanden&lt;br /&gt;
Auslagerung von Texten in Lokalisierungstextfiles&lt;br /&gt;
Möglichkeit zur Auswahl von Texten je nach Geräteklasse&lt;br /&gt;
Erklärungstexte für Status&lt;br /&gt;
ACC Filterung auf Geräteklassenebene&lt;br /&gt;
Mail an Admin bei Delete&lt;br /&gt;
Mapping des ERP Exports und checken der RMAs&lt;br /&gt;
Test Scheduler einrichten&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Änderungen ===&lt;br /&gt;
* Fehler beim &amp;#039;&amp;#039;&amp;#039;Import&amp;#039;&amp;#039;&amp;#039; wenn Leerzeilen enthalten - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Feature: Statt RMA Date immer &amp;#039;&amp;#039;&amp;#039;Datum der letzten Status Aktualisierung&amp;#039;&amp;#039;&amp;#039;. 1. Angelegt in T3 2. Datum der letzten Bearbeitung aus ERP Datei - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Model erweitern (tstamp) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Templates auf tstamp statt cdate - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Anpassen im Code - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: &amp;#039;&amp;#039;&amp;#039;Datatables&amp;#039;&amp;#039;&amp;#039; Skript für Listenansicht - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Validierungen&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Keine Beschreibung bei Repair eingegeben - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Kein Service Request gewählt - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Inspection Repair und No Service nicht gemeinsam anwählbar - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** F: Wenn Repair dann keine Kalibrierung (ist beinhaltet) -&amp;gt; Änderung Calib und Repair möglich - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** F: Wenn Kalibrierung dann kein Repair -&amp;gt; ist doch möglich - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: Am Ende Auswahlfeld Expresskalibrierung aber nur wenn Kalibrierung ausgewählt ist &amp;#039;&amp;#039;&amp;#039;Todo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: + Textfeld (Additional information) -&amp;gt; &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039; wird immer angezeigt auch wenn keine Expresskalib. &amp;#039;&amp;#039;&amp;#039; Evtl. anpassen (nach Rücksprache)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Beispielbilder&amp;#039;&amp;#039;&amp;#039; &amp;quot;Wo finde ich die Seriennummer&amp;quot; in Add Metadevice - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Bug: Add Main Device, Add 2.Device, Zurück auf Main Device Tab =&amp;gt; &amp;#039;&amp;#039;&amp;#039;Tabs&amp;#039;&amp;#039;&amp;#039; werden nicht mehr richtig dargestellt - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Nichtssagende &amp;#039;&amp;#039;&amp;#039;Fehlermeldung&amp;#039;&amp;#039;&amp;#039; in AddMetadevice wenn die Validierung scheitert (Seite wird erneut angezeigt) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Feature: NewFormFields soll Auswahl für Acc nur anbieten wenn Userrecht vorliegt (Safety) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMA Doku&amp;#039;&amp;#039;&amp;#039; -&amp;gt; z.T. aus E-Mails übernehmen - &amp;#039;&amp;#039;&amp;#039;TODO&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Fehlermeldungen von Extbase&amp;#039;&amp;#039;&amp;#039; verhindern bei Browserbedienung (vor und zurück Buttons) - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Wenn &amp;#039;&amp;#039;&amp;#039;RMA nicht vorhanden&amp;#039;&amp;#039;&amp;#039; (z.B. gelöscht) dann aussagekräftige Fehlermeldung) &amp;#039;&amp;#039;&amp;#039; ToDo &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Feature: &amp;#039;&amp;#039;&amp;#039;RMA gelöscht Mail&amp;#039;&amp;#039;&amp;#039; nur dann wenn Status 2 erreicht (also wenn schon eine Info bei Narda ankam) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMA Nummern&amp;#039;&amp;#039;&amp;#039; werden nur als gelöscht markiert bzw. eine Nummer wird nie mehrfach vergeben. - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ACC&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** &amp;#039;&amp;#039;&amp;#039;PDF&amp;#039;&amp;#039;&amp;#039; muß auch an Kunden (FE-User) gesendet werden - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RMA löschen Bestätigung&amp;#039;&amp;#039;&amp;#039; (JS) - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* SRM Auswahl der Geräte -&amp;gt; richtige Tabs aktiv -&amp;gt; bei SRM 3 Tabs &amp;quot;rf-cable&amp;quot; - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* E-Mail RMA Type weg, RMA Prominent oben, evtl. im Betreff - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Zuerst Device Title dann SN - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Umbenennungen&lt;br /&gt;
** Express Order -&amp;gt; Express Calibration Service - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Factory Calibration / Repair -&amp;gt; ohne Warranty Request - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Modification Texte 5 und 6 - &amp;#039;&amp;#039;&amp;#039;OK&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* F: ClientID Mode -&amp;gt; User mit der selben Client ID können RMAs anderer User sehen - &amp;#039;&amp;#039;&amp;#039;ToDo&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Client Id als Merkmal im User - &amp;#039;&amp;#039;&amp;#039; ToDo &amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
** Client ID muß beim abspreichern vorliegen und mit abgespeichert werden.&lt;br /&gt;
&lt;br /&gt;
== Internet Präsenz Narda ==&lt;br /&gt;
&lt;br /&gt;
Mischung aus verschiedenen Systemen&lt;br /&gt;
&lt;br /&gt;
Hauptdomain: www.narda-sts.de&lt;br /&gt;
&lt;br /&gt;
=== Content Management System ===&lt;br /&gt;
Frontend ist TYPO3 allerdings werden einige Download-Listen über ein php-Skript generiert.&lt;br /&gt;
Diese Inhalte werden über ein eigenes Tool realisiert.&lt;br /&gt;
&lt;br /&gt;
=== FTP-Zugänge ===&lt;br /&gt;
&lt;br /&gt;
Die Seite würd über vodafone gehostet. Vodafone der Zugriff erfolgt Zentral über&lt;br /&gt;
ftp.vodafone-ip.de&lt;br /&gt;
&lt;br /&gt;
Im Admin Bereich von Vodafone kann man FTP Benutzer anlegen.&lt;br /&gt;
Der Zugriff erfolgt dann über [benutzername]%[domainname]&lt;br /&gt;
Also z.B. aszwei%narda-sts.de&lt;br /&gt;
&lt;br /&gt;
=== Server Verwaltung ===&lt;br /&gt;
Hier kann man FTP Zugänge anlegen, auf phpMyAdmin zugreifen etc.&lt;br /&gt;
Login unter: https://webadmin.arcor.net/Secure/&lt;br /&gt;
&lt;br /&gt;
=== phpMyAdmin ===&lt;br /&gt;
Direkt zu erreichen unter:&lt;br /&gt;
&lt;br /&gt;
== Eigenes Admin System ==&lt;br /&gt;
Zur Verwaltung von downloads, etc.&lt;br /&gt;
http://www.narda-sts.de/admin/&lt;br /&gt;
&lt;br /&gt;
Greift auf eine separate Datenbank zu, in der die Daten abgelegt sind.&lt;br /&gt;
&lt;br /&gt;
==== Anpassen eines Software Downloads ====&lt;br /&gt;
Um einen Download anzupassen spielt man die Datei per FTP unterhalb des Verzeichnisses&lt;br /&gt;
/download/software/&lt;br /&gt;
&lt;br /&gt;
Als nächstes öffnet man das Admin Tool und geht in den Menüpunkt&lt;br /&gt;
SoftwareUpdate (beta)&lt;br /&gt;
Dort kann man die Release Nummer anpassen (z.B. 2011) und aus dem Dropdownfeld die passende Datei auswählen.&lt;br /&gt;
&lt;br /&gt;
==== Anlegen eines neuen Downloads ====&lt;br /&gt;
Hierbei muß man beachten daß in TYPO3 ein php Schnipsel eingebunden wird.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  include(&amp;quot;fileadmin/user_upload/scripts/db_func.inc&amp;quot;);&lt;br /&gt;
  print (get_software_information(&amp;quot;EFC_HF_Demo_EN&amp;quot;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gibt einen Download Block inkl. Link und Beschreibung aus.&lt;br /&gt;
Wobei als Parameter der Name im Datenbankfeld re_call übergeben wird. Dieser wird beim Anlegen der Software manuell Vergeben&lt;br /&gt;
&lt;br /&gt;
== Sales Partner Extranet ==&lt;br /&gt;
www.narda-sts.de/sp (oder /vp)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== RMA Garantie und Rücklaufgeräte ==&lt;br /&gt;
Dies wird über Vertragspartner erledigt, und es gibt ein weiteres Tool. Der User holt sich ein RMA Ticket (Online Formular) Je nach Region wird dann an den Vertriebspartner eine E-Mail versendet. Außerdem an Narda. &lt;br /&gt;
&lt;br /&gt;
Auf dem Serverl liegt es im Ordner /1/RMA/&lt;br /&gt;
&lt;br /&gt;
Im Quelltext sind auch etliche E-Mail Adressen hinterlegt die auf Mails zu Aichele und dem Programmierer hinweisen. Das müßte mal ausgemistet werden.&lt;br /&gt;
&lt;br /&gt;
=== Kontaktdaten der Vertriebspartner ===&lt;br /&gt;
Diese sind in der Datenbank in der Tabelle &amp;#039;&amp;#039;&amp;#039; rma_requests&amp;#039;&amp;#039;&amp;#039; hinterlegt.&lt;br /&gt;
Es gibt auch eine Tabelle Vertriebspartner. Ist aber nicht ganz klar wann diese benutzt werden.&lt;br /&gt;
Ich habe noch kein Administrationstool gefunden. Die Änderung kann aber direkt in der Datenbank erfolgen.&lt;br /&gt;
 &lt;br /&gt;
Edit:&lt;br /&gt;
&lt;br /&gt;
Vertriebspartner in der Tabelle vertriebspartner werden vom RMA Prozess Tool (und vom neuen acc Tool) genutzt.&lt;br /&gt;
&lt;br /&gt;
Es gibt außerdem eine Ausgabe der Vertriebspartner Adressen. Dabei werden über das Admin Tool (Narda Tool -&amp;gt; Partner Update) html Dateien geschrieben, die dann im Typo eingebunden sind. (Total umständlich). Es wird die Tabelle ??? genutzt.&lt;br /&gt;
&lt;br /&gt;
=== Funktionsweise technische Realisierung (PHP-Skripte) ===&lt;br /&gt;
Siehe MindMap&lt;br /&gt;
&lt;br /&gt;
Einstieg für den RMA Prozess ist der Link:&lt;br /&gt;
&lt;br /&gt;
 http://www.narda-sts.de/1/RMA/rma_select_01.php?req_art=rep_cal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In diesem Schritt wird die Länderauswahl angezeigt und die Art der Anfrege übergeben.&lt;br /&gt;
Nach der Länderauswahl sieht der link dann ungefähr so aus:&lt;br /&gt;
&lt;br /&gt;
https://ssl.arcor-secure.de/narda-sts.de/1/RMA/rma_persData_02.php?req_art=rep_cal&amp;amp;req_id=P20110214_gF164223&amp;amp;req_reg=2&lt;br /&gt;
&lt;br /&gt;
Es wird also eine req_id und req_reg Übergeben. Und die Persönlichen Daten abgefragt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
RMA/rma_reCall.php&lt;br /&gt;
&lt;br /&gt;
== ACC Prozess ==&lt;br /&gt;
Für den ACC (Accredited Callbration) wurde das Tool komplett überarbeitet und entschlackt. Im Moment läuft es nicht auf dem Narda Server, sondern auf dem Geo-bit Server.&lt;br /&gt;
&lt;br /&gt;
=== Hinweise zur Datenbank ===&lt;br /&gt;
Die Partner sind hier in der Tabelle Vertriebspartner hinterlegt. Sie Loggen sich mit ihrer ID und einem Passwort ein. Die Tabelle wurde ursprünglich kopiert und um einige Felder erweitert. &lt;br /&gt;
&lt;br /&gt;
Es können sich nur Partner anmelden die im Feld&lt;br /&gt;
&lt;br /&gt;
== Weitere Skripte ==&lt;br /&gt;
&lt;br /&gt;
Es sind einige weitere Skripte im Einsatz:&lt;br /&gt;
&lt;br /&gt;
=== Funktionsübersicht von Produkten ===&lt;br /&gt;
/doc/fileadmin/user_upload/scripts/func_overview.inc.php&lt;br /&gt;
&lt;br /&gt;
Wird in Typo3 so aufgerufen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
 include(&amp;quot;fileadmin/user_upload/scripts/func_overview.inc.php&amp;quot;);&lt;br /&gt;
  $config_file = &amp;quot;typo3conf/localconf.php&amp;quot;;&lt;br /&gt;
  $image_path = &amp;quot;fileadmin/user_upload/products/personal_protection&amp;quot;;&lt;br /&gt;
  $page_id = 70; // ID DER UEBERGEORDNETEN SEITE&lt;br /&gt;
  print get_overview($page_id,$image_path,&amp;quot;Personal Monitor&amp;quot;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Funktion:&lt;br /&gt;
&lt;br /&gt;
* Liest die aktuelle Sprache aus dem L Parameter oder der RealURL Adresse&lt;br /&gt;
* Liest die pid der untergeordneten Seiten aus.&lt;br /&gt;
&lt;br /&gt;
=== Mailfunktion RMA / ACC ===&lt;br /&gt;
==== RMA ====&lt;br /&gt;
Es werden mehrere Mails generiert. &lt;br /&gt;
&lt;br /&gt;
1. Schritt User Registrierung =&amp;gt; Mail mit dem Ticket. Dieses enthält einen Link. Für die Geräteeingabe&lt;br /&gt;
Mailversand in &amp;#039;&amp;#039;&amp;#039;rma_persData_02.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
2. Schritt Versand der RMA Daten&lt;br /&gt;
 $html_mail_versand = send_html_mail($req_number,$req_ident_number,$req_art);&lt;br /&gt;
kommt aus &amp;#039;&amp;#039;&amp;#039;mail_html_function.inc.php&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==== ACC ====&lt;br /&gt;
Das Formular zur Eingabe liegt in &amp;#039;&amp;#039;&amp;#039;acc_form.ph&amp;#039;&amp;#039;&amp;#039;p Nach Absenden wird &amp;#039;&amp;#039;&amp;#039;acc_form_send.php&amp;#039;&amp;#039;&amp;#039; aufgerufen. In diesem wird die Mail über die Funktion &lt;br /&gt;
 $success = send_acc_mail($rma_num,$arrForm,$arrPartner); &lt;br /&gt;
versendet. Die Funktion wird in &amp;#039;&amp;#039;&amp;#039;lib/acal_functions.php&amp;#039;&amp;#039;&amp;#039; zur Verfügung gestellt.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FORMULAR        MAILVERSAND / FEEDBACK&lt;br /&gt;
acc_form.php -&amp;gt; acc_form_send.php        &amp;lt;- includes acal_functions.php (send_acc_mail)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>87.165.0.123</name></author>
	</entry>
</feed>