首页 文章

TYPO3 Extbase fe_user UID在自己的模型中

提问于
浏览
1

我在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都没关系!

3 回答

  • 0

    在模型文件中 .

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

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

    正确的 Value 观是:

    模型:

    /*
     *
     * @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;  
        }
    
  • 2

    没有适当的模型视图很难说 . 您的模型和TCA之间很可能不匹配:一方面,您使用的是整数(setFuID()),另一方面,您有一个对象(foreign_table / foreign_class) . 也许它在您将其调整为相同之后仍在工作 .

相关问题