Zum Inhalt springen

Extension mit fe_users verknüpfen

Erstellt am 8. August 2018 · 4 Antworten · letzte Antwort am 3. September 2018

Tags: Frontend-Benutzer, TYPO3 8, Frage

schumiel ·

Hallo,

ich möchte gern eine bestehende Extension mit der fe_users verknüpfen. Das heißt, quasi in der Extension die fe_users als Fremdschlüssel einbinden.

Wie macht man das?
Hat jemand passende Quellen dazu? Ich finde über Google nichts.

Ich möchte keine fertige Lösung. Bin aber auch nicht abgeneigt, wenn dies irgendwo gibt.

schumiel ·

Ich bin weiter gekommen.

config.tx_extbase {
persistence {
classes {
Test\TestExt\Domain\Model\Test {
mapping {
tableName = fe_users
}
}
}
}
}

Ich habe auch in meiner Erweiterung in der Datenbank eine "userid" angelegt, die quasi mit der uid von fe_user verknüpfen soll. Jedoch bekomme ich dann im Controller keine Daten aus der fe_user.

public function listAction()
{
$test = $this->contactRepository->findAll();
$this->view->assignMultiple(
[
'test' => $test
]
);
}

Wo mache ich was falsch?

Julian.​Hofmann ·

Hallo.

Eigentlich ist es nicht schwer - wenn man weiß, wo man ansetzen muss (und das rauszufinden ist anfangs nicht so einfach).

Um eine Relation zu fe_users aufzubauen, brauchst Du weder was mit override, noch eine gesonderte TS-Konfiguration unter config.tx_extbase.persistence. Beides bräuchtest Du, falls Deien Extension die fe_users-Tabelle um Felder erweitert udn folglich das Model des FrontendUser auch erweiteret werden müsste.

In Deinem Model:

class YourObject extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
    /**
     * @var \TYPO3\CMS\Extbase\Domain\Model\FrontendUser
     */
    protected $frontendUser;

    /**
     * @return \TYPO3\CMS\Extbase\Domain\Model\FrontendUser
     */
    public function getFrontendUser()
    {
        return $this->frontendUser;
    }

    /**
     * @param \TYPO3\CMS\Extbase\Domain\Model\FrontendUser $frontendUser
     */
    public function setFrontendUser($frontendUser)
    {
        $this->frontendUser = $frontendUser;
    }
}

In Deiner ext_tables.sql:

CREATE TABLE yourtablename {
    frontend_user int(11) DEFAULT '0' NOT NULL,
}

Im TCA:

'frontend_user' => [
    'label' => 'FE-User',
    'config' => [
        'type' => 'select',
        'renderType' => 'selectSingle',
        'foreign_table' => 'fe_users',
    ],
]

Hoffe, ich hab nichts übersehn.