Typo3 在自己的模型中键入3 Extbase fe_用户UID

Typo3 在自己的模型中键入3 Extbase fe_用户UID,typo3,fluid,extbase,Typo3,Fluid,Extbase,我在Typo36.2中创建了一个extbase插件。在一个表中,我有一个字段“fuid”,我想在其中存储fe_用户uid,以了解哪个用户可以编辑此记录 我在createAction中设置了“fuid”: $newLocation->setFuID((int) $GLOBALS['TSFE']->fe_user->user['uid']); 这项工作。数据库中有正确的UID 但在行动中: $location->getFuID() returns null 为什么? TC

我在Typo36.2中创建了一个extbase插件。在一个表中,我有一个字段“fuid”,我想在其中存储fe_用户uid,以了解哪个用户可以编辑此记录

我在createAction中设置了“fuid”:

$newLocation->setFuID((int) $GLOBALS['TSFE']->fe_user->user['uid']);
这项工作。数据库中有正确的UID

但在行动中:

$location->getFuID()
returns null
为什么?

TCA:


在后端/TYPO3都可以

如果没有合适的模型视图,很难说。很可能您的模型和TCA之间不匹配:一方面您使用的是整数(setFuID()),另一方面您使用的是对象(foreign_table/foreign_class)。可能是在您将其调整为相同后,它才起作用。

我发现了错误!extensionBuilder在模型中写入错误的数据:

正确的值是:

型号:

/*
 *
 * @var TYPO3\CMS\Extbase\Domain\Model\FrontendUser
 */
protected $fuID = NULL;

...
...
...

/**
 * Returns the fuID
 *
 * @return TYPO3\CMS\Extbase\Domain\Model\FrontendUser fuID
 */
public function getFuID() {
    return $this->fuID;
}

/*
 * Sets the fuID
 *
 * @param string $fuID
 * @return TYPO3\CMS\Extbase\Domain\Model\FrontendUser fuID
 */
public function setFuID(TYPO3\CMS\Extbase\Domain\Model\FrontendUser $fuID) {
    $this->fuID = $fuID;
}
控制器:

/**
     * User Repository
     *
     * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
     * @inject
     */
    protected $userRepository;

    /**
     * Den aktuell angemeldeten User auslesen
     *
     * @return \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
     */
    public function getCurrentUser() {
        if ($this->currentUser == NULL && $GLOBALS['TSFE']->fe_user->user['uid'] > 0) {
            $this->currentUser = $this->userRepository->findByUid($GLOBALS['TSFE']->fe_user->user['uid']);
        }

        return $this->currentUser;  
    }
在模型文件中

/**
 * feuseruid
 *
 * @var \TYPO3\CMS\Extbase\Domain\Model\FrontendUser
 */
protected $feuseruid;

// GET and SET Methods

/**
 * Returns the feuseruid
 *
 * @return \TYPO3\CMS\Extbase\Domain\Model\FrontendUser feuseruid
 */
public function getFeuseruid() {
     return $this->feuseruid;
}

/*
 * Sets the feuseruid
 *
 * @param string $feuseruid
 * @return \TYPO3\CMS\Extbase\Domain\Model\FrontendUser feuseruid
 */
public function setFeuseruid(\TYPO3\CMS\Extbase\Domain\Model\FrontendUser $feuseruid) {
     $this->feuseruid = $feuseruid;
}
在TCA文件中

'feuseruid' => array(
    'exclude' => 1,
    'label' => 'Feuser Id',
    'config' => array(
        'type' => 'inline',
        'foreign_table' => 'fe_users',
        'minitems' => 0,
        'maxitems' => 1,
        'appearance' => array(
            'collapseAll' => 0,
            'levelLinksPosition' => 'top',
            'showSynchronizationLink' => 1,
            'showPossibleLocalizationRecords' => 1,
            'showAllLocalizationLink' => 1
        ),
    ),
),
在Sql.php中

feuseruid int(11) unsigned DEFAULT '0' NOT NULL,
内部控制器

/**
 * User Repository
 *
 * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
 * @inject
 */
protected $userRepository;

$userObject = $this->userRepository->findByUid($GLOBALS['TSFE']->fe_user->user['uid']);
$orders->setFeuseruid($userObject);
$this->yourRepository->add($orders);

$location的受保护值也为空。它不会从数据库中加载值。我不知道为什么extensionBuilder有时将函数命名为fuid,但mysql字段是fu_I_d,两者的映射在哪里?如果遵循编码约定,映射(在正常情况下)会自动发生。小写字母get被转换为小写字母加下划线(小写=>小写字母),反之亦然。您需要什么信息?我在这个扩展插件的另一个插件上也有同样的错误。扩展管理器中的大多数内容都是默认的。我不知道在哪里可以找到这个错误。
/**
 * User Repository
 *
 * @var \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
 * @inject
 */
protected $userRepository;

$userObject = $this->userRepository->findByUid($GLOBALS['TSFE']->fe_user->user['uid']);
$orders->setFeuseruid($userObject);
$this->yourRepository->add($orders);