TYPO3:将fe_users映射到fe_users的父记录

时间:2018-10-22 14:35:42

标签: typo3 extbase typo3-8.x

在自定义扩展中,我使用字段“ manager”扩展了fe_users表。此字段保留用户的老板。

现在,我要将父记录的字段“ 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”字段中,需要进行哪些配置或更改?

编辑(更多详细信息)

字段“ manager”的值由LDAP(它是父用户,老板的DN)和“ tx_igldapssoauth_dn”(用户本身的DN)填充。因此,“ tx_igldapssoauth_dn”是唯一值,可以与条目的uid进行比较。

我的问题不是没有将所需的值保存到字段“ manager”,而是将字段“ manger”与字段“ tx_igldapssoauth_dn”连接起来。

因此,如果记录上的字段“ manager”拥有值CN=Firstname Lastname,OU=Department,DC=example,DC=net,则它应连接到字段“ tx_igldapssoauth_dn”中具有相同值(CN=Firstname Lastname,OU=Department,DC=example,DC=net)的记录。

1 个答案:

答案 0 :(得分:1)

我认为这样映射是不明智的。因为tx_igldapssoauth_dn不是唯一键-uid是唯一键。使用fe_users.uid值时没有问题。 您可以使用此uid获取fe_user对象,然后从那里获取所需的值。

您可以使用类似以下的内容:

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