首先,我使用" Extension Builder"创建一个扩展。我想扩展" tt_address"扩展
我的步骤是什么?
我创建了一个实体Adress
并将其映射到现有的表tt_address
。在我的实体Address
中,我创建了用于检索地址信息的setter和getter,例如' city,zip和street'
在此步骤之后,我创建了一个扩展AddressRepository
的存储库\TYPO3\CMS\Extbase\Persistence\Repository
。
extensionbuilder使用以下内容创建一个typoscript文件ext_typoscript_setup.txt
:
config.tx_extbase { 持久{ 类{
Mab\Oaaddress\Domain\Model\Address {
mapping {
tableName = tt_address
recordType = Tx_Oaaddress_Address
}
}
}
}}
我在storagePid
constants.txt
醇>
在最后一步中,我想从数据库中检索所有地址,并在列表视图中显示。
class AddressController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
/**
* Events repository
*
* @var \Mab\Oaaddress\Domain\Repository\AddressRepository
* @inject
*/
protected $addressRepository;
/**
* action list
*
* @return void
*/
public function listAction() {
// Exists adress repository?
//var_dump($this->addressRepository);
$addresses = $this->addressRepository->findAll();
//var_dump(count($addresses));
$this->view->assign('addresses', $addresses);
}
表tt_address
包含十多个结果。但控制器显示$addresses
计数始终为0
。我清除每个缓存(空的Typo3Temp文件夹,通过安装工具清空缓存,倒空后端缓存)但没有任何效果。我的控制器为什么没有返回有人可以给我一个提示吗?
更新
在分析查询日志后,我发现此查询已执行:
SELECT tt_address.* FROM tt_address WHERE 1=1 AND (tt_address.tx_extbase_type='Tx_Oaaddress_Address') AND tt_address.pid IN (148) AND tt_address.deleted=0 AND tt_address.hidden=0
如何删除此部分
tt_address.tx_extbase_type =' Tx_Oaaddress_Address'从查询的哪一部分?
答案 0 :(得分:0)
您可以添加:
config.tx_extbase {
persistence {
classes {
FriendsOfTYPO3\TtAddress\Domain\Model\Address {
mapping {
tableName = tt_address
recordType = Tx_TtAddress_Listview
}
}
}
}
}
然后将“ Tx_TtAddress_Listview”添加到您的tx_extbase_type中,如下所示: // Configuration / TCA / Overrides / tt_address.php
$tempColumnstx_yourext_tt_address[$GLOBALS['TCA']['tt_address']['ctrl']['type']] = [
'exclude' => true,
'label' => 'yourLabe for Type',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Person','Tx_TtAddress_Listview'],
['MyLabel','Tx_YourExt_type']
],
'default' => 'Tx_TtAddress_Listview',
'size' => 1,
'maxitems' => 1,
]
];
这会在SQL语句中添加或,例如:
... WHERE ((`tt_address`.`t
x_extbase_type` = Tx_YourExt_type) OR (`tt_address`.`tx_extbase_type` = Tx_TtAddress_Listview) ...