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.
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)
对于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
归档时间: |
|
查看次数: |
6386 次 |
最近记录: |