簡體   English   中英

TYPO3 Extbase fe_user UID在自己的模型中

[英]TYPO3 Extbase fe_user UID in own model

我在TYPO3 6.2中創建了一個extbase插件。 在一個表中,我有一個字段“fuid”,我想存儲fe_users uid,以了解哪個用戶可以編輯此記錄。

我在createAction中設置了“fuid”:

$newLocation->setFuID((int) $GLOBALS['TSFE']->fe_user->user['uid']);

這項工作。 在數據庫中是正確的UID。

但是在editAction中:

$location->getFuID()
returns null

為什么?

TCA:

fu_i_d' => array(
            'exclude' => 1,
            'label' => 'LLL:EXT:pitss24/Resources/Private/Language/locallang_db.xlf:tx_pitss24_domain_model_location.fu_i_d',
            'config' => array(
                'type' => 'select',
                'items' => array (
                        array('',0),
                ),
                'foreign_table' => 'fe_users',
                'foreign_class' => '\TYPO3\CMS\Extbase\Domain\Model\FrontendUser',
                'minitems' => 0,
                'maxitems' => 1,
                'size' => 10,
                'appearance' => array(
                    'collapseAll' => 0,
                    'levelLinksPosition' => 'top',
                    'showSynchronizationLink' => 1,
                    'showPossibleLocalizationRecords' => 1,
                    'showAllLocalizationLink' => 1
                ),
            ),
        ),

在后端/ TYPO3都沒關系!

在模型文件中。

/**
 * 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);

我發現了錯誤! 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;  
    }

沒有適當的模型視圖很難說。 您的模型與TCA之間很可能不匹配:一方面,您使用整數(setFuID()),另一方面您有一個對象(foreign_table / foreign_class)。 也許它在你調整到相同之后才能工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM