TYPO3 /如何从现有的表fe_users创建存储库?

Tom*_*ask 5 typo3 backend repository extbase

我正在使用Extbase和Fluid创建一个特殊的BE模块,我需要一个代表标准FE用户的域对象.当我创建名为Feuser的新域对象并保存它时,扩展构建器会创建特殊的存储库,并且还希望在数据库中创建特殊的表tx_myextkey_feuser.但是这个表已经存在为fe_users.

有可能告诉typo3 Feuser对象的存储库已经存在(作为fe_users表),而typo3应该使用现有的存储库吗?我怎样才能做到这一点?

我需要它,因为扩展(包括这个BE模块)需要在同一个地方(这个BE模块)拥有每个逻辑和控件.

一般来说,如果可能的话,我需要为两个地方的新FE用户提供相同的插入对话框.如果没有,我可以创建自己的新建/编辑/显示操作,但我需要告诉TYPO3它应该使用FE用户的现有存储库.

我正在使用拼写错误4.7.3.

der*_*sen 6

ExtBase已经为现有的表fe_user提供了一个域模型.此域模型是:

Tx_Extbase_Domain_Model_FrontendUser
Run Code Online (Sandbox Code Playgroud)

它包含TYPO3附带的所有默认fe_users字段.

如果您使用自己的字段扩展了fe_users,则还必须扩展Tx_Extbase_Domain_Model_FrontendUser域模型和关联的存储库,以便它知道您添加到fe_users的新字段.

关联的存储库是:

Tx_Extbase_Domain_Repository_FrontendUserRepository
Run Code Online (Sandbox Code Playgroud)

您必须为存储库设置存储PID,以便它可以找到您的fe_users.

对于前端插件中使用的控制器操作,请使用:

plugin.your_plugin {
    persistence {
        storagePid = somePid, anotherPid
    }
}
Run Code Online (Sandbox Code Playgroud)

如果后端模块中使用的控制器操作使用:

module.your_module {
    persistence {
        storagePid = somePid, anotherPid
    }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,不可能将TYPO3附带的相同对话框用于您自己的扩展,因此您必须在后端模块中创建自己的操作(new/edit/show)和表单.

[编辑]

默认情况下,ExtBase假定所有fe_users都分配了记录类型.当您打开其中一个前端用户时,您将看到"扩展"选项卡包含一个下拉字段,该字段标记为"记录类型".如果未设置此字段,ExtBase将无法使用存储库中的某个find-methods找到fe_user.

您应该为所有fe_users设置记录类型(推荐方式),或者您可以通过在设置中使用以下TS来禁用到该字段的映射

config.tx_extbase.persistence.classes {
    Tx_Extbase_Domain_Model_FrontendUser {
        mapping.recordType >
    }
}
Run Code Online (Sandbox Code Playgroud)

对于新创建的fe_users或fe_groups,您可以通过将以下TS添加到根页面TS来设置字段"记录类型"的默认值

TCAdefaults.fe_users.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUser
TCAdefaults.fe_groups.tx_extbase_type = Tx_Extbase_Domain_Model_FrontendUserGroup
Run Code Online (Sandbox Code Playgroud)


Mih*_*att 6

对于Extbase 6.X

你需要在扩展构建器内的扩展现有模型类字段中给出类似\ TYPO3\CMS\Extbase\Domain\Model\FrontendUser 而不是Tx_Extbase_Domain_Repository_FrontendUserRepository的

之后,您可以控制模型中的fe_users ....

还要在扩展的根目录中添加文件ext_typoscript_setup.txt(如果通过extension_builder生成,则自动添加)

config.tx_extbase{
    persistence{
        classes{

            TYPO3\CMS\Extbase\Domain\Model\FrontendUser {
                subclasses {
                    Tx_Extendfeuser_Extended = Model_class_with_namespace

                }
            }
            SkiBoutique\SbChalets\Domain\Model\Extended {
                mapping {
                    tableName = fe_users
                    recordType = Tx_Extendfeuser_Extended
                }
            }

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!!!

适用于TYPO3 7.6.X