TYPO3:扩展模型并映射到现有表

时间:2016-08-10 08:43:14

标签: php typo3 typo3-7.6.x

我需要使用一些自定义字段创建自定义FE用户。 此外,它需要通过前端分配给不同的用户组。

您可以找到我的第一个方法here。没有做得那么好。

第二种方法是创建另一个扩展并遵循显示here的指南。

我做的第一件事是将\TYPO3\CMS\Extbase\Domain\Model\FrontendUser添加到我的CustomFEU模型的Extend existing model class-field中。 然后我创建了另一个名为FEgroup的模型,并将其映射到表fe_groups。之后,我将一个n:m关系连接到CustomFEU。

当我尝试使用new操作创建新的CustomFEU时,它会在提交表单后返回一个空白页面,而不会添加任何用户。

我发现的唯一奇怪的事情是/Classes/Domain/Repository/文件夹是空的。

TYPO3 7.6.8

虽然我还没有编辑文件,但它们是:
Model / Controller / Setup

有没有人遇到过类似的问题?

1 个答案:

答案 0 :(得分:2)

首先,您需要创建处理新用户和用户组模型的存储库。

其次,您尝试使用$this->customFEURepository->add($newCustomFEU);保存用户,并且变量customFEURepository不存在。注入它是最好的,它必须是您应该首先创建的存储库。你可以像这样注入它:

/**
 * CustomFEUController
 */
class CustomFEUController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{

    /**
     * @var \Vendor\Feregistration\Repository\CustomFEURepository
     * @inject
     */
    protected $customFEURepository;

// other code ...
}

添加注入注释后不要忘记清除系统缓存,否则无法正常工作。

最后但并非最不重要的是,我看不到映射到您的模型的数据库表。您需要将它添加到TypoScript(setup.txt)

config.tx_extbase.persistence.classes {

    Vendor\Feregistration\Domain\Model\CustomFEU {
        mapping {
            recordType = 0
            tableName = fe_users
        }
    }

    Vendor\Feregistration\Domain\Model\FEGroups {
        mapping {
            recordType = 0
            tableName = fe_groups
        }
    }
}