TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

jetzt buchen

Mit extbase Extension vorhandene Tabellen erweitern und nutzen?


Autor Nachricht
Verfasst am: 21. 01. 2010 [09:52]
typo3typ
Themenersteller
Dabei seit: 14.02.2008
Beiträge: 40
Hallo liebe TYPO3ler!


erst einmal ist extbase und fluid super spannend!! icon_biggrin.gif
Daher versuche ich mich gerade an der Entwicklung einer Ext. mit extbase. Dazu möchte ich die fe_groups Tabelle erweitern bzw. überhaupt erst einmal ansprechen...

Ich habe das so verstanden, dass ich über die Persistenzschicht die DB anspreche - jedoch ist, wenn ich eine Extension entwickle, meine Model Domain ja nicht "fe_..." sondern "tx_...".

Also, kann ich denn aus meiner "tx_.." Domain über die Persistenzschicht überhaupt Tabellen außerhalb meiner Domain ansprechen?
Habe ich etwas komplett übersehen bzw. falsch verstanden, was die Persistenzschicht angeht?

Für einen kleinen Stups in die richtige Richtung wäre ich dankbar!


Beste Grüße aus dem seit 16 Tagen ohne Sonne,trüben, arschkalten, Berlin

Profil
Verfasst am: 21. 01. 2010 [12:38]
jwitt
Dabei seit: 02.11.2004
Beiträge: 123
Wenn Du dir das blog_example anschaust, dann findest du eine Klasse "Tx_BlogExample_Domain_Repository_AdministratorRepository extends Tx_Extbase_Domain_Repository_FrontendUserRepository".
In "ext_base" gibt es neben dem FrontendUserRepository ein FrontendUserGroupRepository und die Klasse Tx_Extbase_Domain_Model_FrontendUserGroup
In diese Richtung solltest Du weiterschauen
Gruß aus Freiburg
Jens
Profil
Verfasst am: 21. 01. 2010 [13:02]
typo3typ
Themenersteller
Dabei seit: 14.02.2008
Beiträge: 40
Klasse - vielen Dank. Das scheint genau das zu sein, was ich brauch!

Hätte ich auch mal merken können - habe halt vor allem den Fridgemaster mal nachgebaut icon_razz.gif


Beste Grüße aus (dem ENDLICH wieder) sonnigen Berlin

EDIT:
Ich habe hier im Forum auch noch eine sehr hilfreiche Seite zu der Problemstellung mit einer sehr ausführlichen Anleitung gefunden - Hut ab Stefan - danke für die Arbeit!

typo3.sfroemken.de/

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 21.01.2010 um 16:35.]
Profil
Verfasst am: 25. 01. 2010 [10:11]
froemken
Dabei seit: 30.01.2007
Beiträge: 740
jou jou...kein Thema. Danke Dir icon_smile.gif

Der direkte Link geht hier hin:
http://typo3.sfroemken.de/index.php?id=81

In der unteren Hälfte zeige ich eine Art "Mapping" für die Modelnamen und den echten Tabellennamen.

Stefan

All meine TYPO3-Problemlösungen und Hilfestellungen landen hier:
http://typo3.sfroemken.de
ProfilWWW
Verfasst am: 25. 01. 2010 [13:23]
typo3typ
Themenersteller
Dabei seit: 14.02.2008
Beiträge: 40
Hi froemken,

schickes neues Design! icon_smile.gif

Habe eine Frage zu dem Teil "fe_users und neue Felder" (typo3.sfroemken.de/index.php?id=81).

Du zeigst, wie Spalten in der erweiterten fe_users Tabelle angesprochen werden.

Das funktioniert auch ganz gut, wenn ich die sr_feuser_register installiere.

Allerdings, sobald ich meine eigene Erweiterung installiere, werden zwar die entsprechenden Spalten der Tabelle hinzugefügt, aber über die User.php kann ich mir z.B. den Vornamen, um den ich fe_users auch erweitere, nicht anzeigen lassen.
Das bleibt immer leer...

Ich habe, weil es ja noch keinen fertigen Kickstarter für extbase gibt, die ext_tables.php selbst geschrieben, und im BE werden mir im Benutzerdatensatz auch alle Felder angezeigt.

Habe mir auch die sr_feuser_reigster angeschaut, und nach etwas gesucht, was ich noch übersehen haben könnte. Jedoch komme ich zu keinem Ergebnis.

Irgendetwas macht die Installation der "sr_feuser_register" was meine Ext. nicht macht ... aber was? Was könnte ich noch übersehen haben?

Beste Grüße

[Dieser Beitrag wurde 1mal bearbeitet, zuletzt am 25.01.2010 um 13:23.]
Profil
Verfasst am: 25. 01. 2010 [14:09]
froemken
Dabei seit: 30.01.2007
Beiträge: 740
Du hast Deine Spalte "FirstName" genannt. Aber in der User.php steht auch FirstName. Ich habe in meiner Doku gezeigt, dass der Bindestrich von first_name bei extbase verschwindet und dafür der Rest des Namens am Anfang großgeschrieben werden muss.

Deine Angabe "FirstName" in der User.php wird von extbase also in den Spaltennamen: first_name umgewandelt. Geht also nicht.

Also musst du setFirstname und getFirstname in die User.php reinschreiben.

All meine TYPO3-Problemlösungen und Hilfestellungen landen hier:
http://typo3.sfroemken.de
ProfilWWW
Verfasst am: 07. 09. 2010 [13:40]
cse
Dabei seit: 29.09.2009
Beiträge: 16
Wie komme ich denn auf andere Tabellen?

Ich habe greife übers Backend mit meiner Extension auf tx_dam_cat zu und biete die Möglichkeit eine Kategorie auszuwählen.

Wie kann ich davon nun anschließend den Namen ausgeben? In der Tabelle wird die ID der Kategorie gespeichert ich komm nur mit dem Mapping nicht so richtig zurecht ... oder muss ich da gar nicht mappen?

Bin für Hilfe sehr dankbar!!
Profil
Verfasst am: 12. 08. 2011 [09:24]
jimmykimmy
Dabei seit: 28.07.2011
Beiträge: 51
Ich muss diesen Thread nochmal wiederbeleben^^
Ich habe froemkens Tutorial durchgearbeitet, da ich mir auch die Benutzer PLUS eine weitere (von mir angelegte Spalte) anzeigen lassen möchte!

Die User werden mir alle angezeigt, allerdings nicht die Extrafelder.

In der DB habe ich die Tabelle "fe_users" und ein VARCHAR Feld "points" erweitert (das es INT sein sollte, sei mal dahingestellt). Im Model (User.php) habe ich die Variable "points" mit getter & setter ebenfalls angelegt.
Wenn ich nun aber mein Repository nach findAll() befrage, erhalte ich zwar die korrekten User (wenn ich einen User debugge sehe ich ebenfalls die Spalte "point" im Objekt), allerdings ist der Wert "point" immer leer.
Was könnte ich da falsch gemacht haben? Habe sonst alles wie auf froemkens Seite beschrieben gemacht!

Kann zur not auch nochmal Quellcode posten.
Profil
Verfasst am: 12. 08. 2011 [10:23]
froemken
Dabei seit: 30.01.2007
Beiträge: 740
In Deiner User.php muss die Klasse xxx_Domain_Model_User von der Extbase Klasse xxx_Extbase_Domain_Model_FeUsers erben.

In Deiner User.php müssen die getter und setter für Dein neues Feld eingetragen werden.

Über Configuration/TypoScript/setup.txt muss Extbase mitgeteilt werden, dass Deine Klasse xxx_Domain_Model_User auf die Tabelle fe_users gemapped werden soll:

Ohne Gewähr...da aus dem Kopf:
persistence.classes.Tx_xxx_Domain_Model_User.mapping.tableName = fe_users

Stefan

All meine TYPO3-Problemlösungen und Hilfestellungen landen hier:
http://typo3.sfroemken.de
ProfilWWW
Verfasst am: 12. 08. 2011 [10:47]
jimmykimmy
Dabei seit: 28.07.2011
Beiträge: 51
hey froemken, danke für die schnelle Antwort. So habe ich das alles gemacht! Ich habe auch den Eintrag in der setup.txt vorgenommen und sehe es im ObjectBrowser auch, es ist also dort auch korrekt eingetragen.

So sehen meine 3 Dateien aus:

"User.php"
PHP
<?php
class Tx_Myext_Domain_Model_User extends Tx_Extbase_Domain_Model_FrontendUser {
 
    /**
     * @var string
     */
    protected $point;
 
    /**
     * Sets the point value
     *
     * @param string $point
     * @return void
     * @api
     */
    public function setPoint($point) {
        $this->point = $point;
    }
 
    /**
     * Returns the point value
     *
     * @return string
     */
    public function getPoint() {
        return $this->point;
    }
}
?>


UserController.php
PHP
<?php
class Tx_Myext_Controller_UserController extends Tx_Extbase_MVC_Controller_ActionController {
 
    /**
     * @var Tx_Extbase_Domain_Repository_FrontendUserRepository
     */
    protected $userRepository;
 
    /**
     * Initializes the current action
     *
     * @return void
     */
    public function initializeAction() {
        $this->userRepository = t3lib_div::makeInstance('Tx_Myext_Domain_Repository_UserRepository');
    }
 
    /**
     * List action for this controller. Displays a list of users
     *
     * @return string The rendered view
     */
    public function listAction() {
        $this->view->assign('users', $this->userRepository->findAll());
    }
}
?>


UserRepository.php
PHP
<?php
class Tx_Myext_Domain_Repository_UserRepository extends Tx_Extbase_Persistence_Repository {
 
}
?>


Die Spalte in der "fe_users" habe ich wie gesagt per Hand als VARCHAR einegtragen.
Profil