TYPO3: сопоставить fe_users с родительской записью fe_users - PullRequest
0 голосов
/ 22 октября 2018

В пользовательском расширении я расширяю таблицу fe_users полем "manager".Это поле содержит босса пользователя.

Теперь я хочу сохранить значение поля "tx_igldapssoauth_dn" (которое приходит из ext: ig_ldap_sso_auth ) родительской записи в поле "manager ", а не" uid ".

Моя модель выглядит так:

<?php
namespace Vendor\Extension\Domain\Model;

class FrontendUser extends \TYPO3\CMS\Extbase\Domain\Model\FrontendUser
{

    /**
     * DN of the users manager
     *
     * @var Vendor\Extension\Domain\Model\FrontendUser
     * @lazy
     */
    protected $manager = '';

    /**
     * Returns the manager
     *
     * @return Vendor\Extension\Domain\Model\FrontendUser $manager
     */
    public function getManager()
    {
        return $this->manager;
    }

    /**
     * Sets the manager
     *
     * @param Vendor\Extension\Domain\Model\FrontendUser $manager
     * @return void
     */
    public function setManager($manager)
    {
        $this->manager = $manager;
    }
}

TCA:

'manager' => [
    'exclude' => true,
    'label' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang_db.xlf:tx_myext_feusers_users.manager',
    'config' => [
        'type' => 'select',
        'renderType' => 'selectSingle',
        'foreign_table' => 'fe_users',
    ],
],

Это прекрасно работает и возвращает мне родительскую запись,НО это сохраняет «uid» родительской записи в столбце «manager», а не значение поля «tx_igldapssoauth_dn».

Так что нужно настроить или изменить, чтобы сохранить значение «tx_igldapssoauth_dn "в поле" manager ", а не в" uid "?

EDIT (более подробная информация)

Значение для поля" manager "заполняетсяLDAP (это DN родительского пользователя, босс), а также "tx_igldapssoauth_dn", который является DN самого пользователя.Таким образом, «tx_igldapssoauth_dn» является уникальным значением и может сравниваться с идентификатором записи.

Моя проблема не в сохранении необходимого значения в поле «менеджер», а в соединении поля «менеджер» с полем ».tx_igldapssoauth_dn ".

Таким образом, если поле" manager "в записи содержит значение CN=Firstname Lastname,OU=Department,DC=example,DC=net, оно должно подключиться к записи с таким же значением (CN=Firstname Lastname,OU=Department,DC=example,DC=net) в поле" tx_igldapssoauth_dn ".

1 Ответ

0 голосов
/ 25 октября 2018

Я думаю, что это не разумно / невозможно отображать таким образом.Потому что tx_igldapssoauth_dn не является уникальным ключом - uid есть.Я не вижу проблем при использовании значения fe_users.uid.Вы можете использовать этот uid для получения объекта fe_user и оттуда получить желаемое значение.

Вы можете просто использовать что-то похожее на:

[...]
$yourFrontendUser->getManager()->getTheValueYouWant();
[...]
...