TYPO3:阅读 tt_address 并在自己的 extbase 扩展中使用流体按 sys_categories 排序打印
TYPO3: Reading tt_address and print it sorted by sys_categories with fluid in own extbase extension
我想阅读 tt_address 的内容并在我自己的 extbase/fluid 扩展中按 sys_categories 排序打印它们。
我在打字稿中映射了两个 table,为两者创建了模型、控制器和存储库,因此我能够毫无问题地完整打印两个 table。
但是,我只需要打印与特定类别匹配的地址(取决于页面),但我无法让它工作。
根据一些研究,应该可以加载它们并在流体模板中访问它们,例如
<f:for each="{cats}" as="cat">
<f:for each="{cat.items}" as="adr">{adr}</f:for>
</f:for>
但是如果我通过调试选项显示它们,则没有地址附加到 cat 数组 - 难怪显示 none。
我为两个 table 创建了 TCA,其中只有 M:M 相关的列定义(tt_address 的类别和 sys_categories 的项目),我包括了以下型号:
/**
* Addresses
*
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Myext\Domain\Model\Address>
*/
protected $addresses;
/**
* Adds a Address
*
* @param \Vendor\Myext\Domain\Model\Address $address
* @return void
*/
public function addAddress(\Vendor\Myext\Address\Domain\Model\Address $address) {
$this->addresses->attach($address);
}
/**
* Removes a Address
*
* @param \Vendor\Myext\Domain\Model\Address $addressToRemove The Address to be removed
* @return void
*/
public function removeAddress(\Vendor\Myext\Domain\Model\Address $addressToRemove) {
$this->addresses->detach($addressToRemove);
}
/**
* Returns the Addresses
*
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Myext\Domain\Model\Address> $addresses
*/
public function getAddresses() {
return $this->addresses;
}
/**
* Sets the Addresses
*
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Myext\Domain\Model\Address> $addresses
* @return void
*/
public function setAddresses(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $addresses) {
$this->addresses = $addresses;
}
当然在地址模型中反过来。
错在哪里,我漏了什么?甚至可以在映射的 table 上使用 M:M 关系吗?我需要完整的 TCA 吗?
请帮助我一周以来一直在拼命尝试。每一个答案将不胜感激。
提前致谢!
PS:我当然想用"sys_category_record_mm"-关系table。
您是否使用 makeCategorizable()
向 tt_address table 添加了类别?
这会在 tt_address 上为您添加正确的 TCA,因此您不必担心 MM 关系。
然后,您还可以根据某些参数只获取所有需要的记录。在您的情况下,您的页面类别。您还可以创建类别集合以推送到您的视图。
一切都在这里解释:https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Categories/Index.html
我想阅读 tt_address 的内容并在我自己的 extbase/fluid 扩展中按 sys_categories 排序打印它们。
我在打字稿中映射了两个 table,为两者创建了模型、控制器和存储库,因此我能够毫无问题地完整打印两个 table。
但是,我只需要打印与特定类别匹配的地址(取决于页面),但我无法让它工作。
根据一些研究,应该可以加载它们并在流体模板中访问它们,例如
<f:for each="{cats}" as="cat">
<f:for each="{cat.items}" as="adr">{adr}</f:for>
</f:for>
但是如果我通过调试选项显示它们,则没有地址附加到 cat 数组 - 难怪显示 none。
我为两个 table 创建了 TCA,其中只有 M:M 相关的列定义(tt_address 的类别和 sys_categories 的项目),我包括了以下型号:
/**
* Addresses
*
* @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Myext\Domain\Model\Address>
*/
protected $addresses;
/**
* Adds a Address
*
* @param \Vendor\Myext\Domain\Model\Address $address
* @return void
*/
public function addAddress(\Vendor\Myext\Address\Domain\Model\Address $address) {
$this->addresses->attach($address);
}
/**
* Removes a Address
*
* @param \Vendor\Myext\Domain\Model\Address $addressToRemove The Address to be removed
* @return void
*/
public function removeAddress(\Vendor\Myext\Domain\Model\Address $addressToRemove) {
$this->addresses->detach($addressToRemove);
}
/**
* Returns the Addresses
*
* @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Myext\Domain\Model\Address> $addresses
*/
public function getAddresses() {
return $this->addresses;
}
/**
* Sets the Addresses
*
* @param \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Vendor\Myext\Domain\Model\Address> $addresses
* @return void
*/
public function setAddresses(\TYPO3\CMS\Extbase\Persistence\ObjectStorage $addresses) {
$this->addresses = $addresses;
}
当然在地址模型中反过来。
错在哪里,我漏了什么?甚至可以在映射的 table 上使用 M:M 关系吗?我需要完整的 TCA 吗?
请帮助我一周以来一直在拼命尝试。每一个答案将不胜感激。
提前致谢!
PS:我当然想用"sys_category_record_mm"-关系table。
您是否使用 makeCategorizable()
向 tt_address table 添加了类别?
这会在 tt_address 上为您添加正确的 TCA,因此您不必担心 MM 关系。 然后,您还可以根据某些参数只获取所有需要的记录。在您的情况下,您的页面类别。您还可以创建类别集合以推送到您的视图。
一切都在这里解释:https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Categories/Index.html