[Frage] Extension mit fe_users verknüpfen TYPO3-Version: 8.7.17

  • schumiel schumiel
    R2-D2
    0 x
    86 Beiträge
    0 Hilfreiche Beiträge
    08. 08. 2018, 07:10

    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.

  • Hilfreichster Beitrag

  • 1 x
    3244 Beiträge
    151 Hilfreiche Beiträge
    30. 08. 2018, 09:15 - Hilfreichster Beitrag

    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:
    [code]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;
    }
    }
    [/code]

    In Deiner ext_tables.sql:
    [code]CREATE TABLE yourtablename {
    frontend_user int(11) DEFAULT '0' NOT NULL,
    }[/code]

    Im TCA:
    [code]'frontend_user' => [
    'label' => 'FE-User',
    'config' => [
    'type' => 'select',
    'renderType' => 'selectSingle',
    'foreign_table' => 'fe_users',
    ],
    ]
    [/code]

    Hoffe, ich hab nichts übersehn.


  • 1
  • schumiel schumiel
    R2-D2
    0 x
    86 Beiträge
    0 Hilfreiche Beiträge
    09. 08. 2018, 15:26

    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?

  • schumiel schumiel
    R2-D2
    0 x
    86 Beiträge
    0 Hilfreiche Beiträge
    22. 08. 2018, 20:05

    Ich bin leider noch nicht weiter gekommen und verstehe es einfach nicht. Das kann doch alles nicht so kompliziert sein?
    Bin kurz davor die TYPO3-Eigenschaften zu umgehen. Aber das ist ja nicht der Sinn ... :-(

    http://typo3.sascha-ende.de/docs/development/tca/overrides-example/

  • 1 x
    3244 Beiträge
    151 Hilfreiche Beiträge
    30. 08. 2018, 09:15

    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:
    [code]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;
    }
    }
    [/code]

    In Deiner ext_tables.sql:
    [code]CREATE TABLE yourtablename {
    frontend_user int(11) DEFAULT '0' NOT NULL,
    }[/code]

    Im TCA:
    [code]'frontend_user' => [
    'label' => 'FE-User',
    'config' => [
    'type' => 'select',
    'renderType' => 'selectSingle',
    'foreign_table' => 'fe_users',
    ],
    ]
    [/code]

    Hoffe, ich hab nichts übersehn.

  • schumiel schumiel
    R2-D2
    0 x
    86 Beiträge
    0 Hilfreiche Beiträge
    03. 09. 2018, 14:10

    Danke!

  • 1