我只是使用两个自己的Model类扩展了现有的Typo3 4.7扩展。 它运行得很好,当我尝试通过Object Accessor {class.subclass.attribute}访问模板中的模型类的某些SubObject时,Backendforms看起来像预期但我无法访问该属性。给我看的问题是,对象存储中的属性对象“mainColor”是一个HashCode,它包含我想要访问的实际对象(哈希码后面的对象是数据库中正确的相关对象) 。
你们中是否有人知道问题所在?
如果需要更多代码片段,我会提供它们。但由于我真的不知道问题出在哪里,所以我宁愿不提供一道代码。
域/型号/ Cluster.php
/**
* Main Color of Cluster
* @var Tx_Extbase_Persistence_ObjectStorage<Tx_Alp_Domain_Model_ColorCombination> $mainColor
*/
protected $mainColor;
/**
* Subcolors of Cluster
* @var Tx_Extbase_Persistence_ObjectStorage<Tx_Alp_Domain_Model_ColorCombination> $subColors
*/
protected $subColors;
/**
* Constructor
* @return void
*/
public function __construct() {
$this->initStorageObjects();
}
/**
* Initializes all Tx_Extbase_Persistence_ObjectStorage properties.
* @return void
*/
protected function initStorageObjects() {
$this->subColors = new Tx_Extbase_Persistence_ObjectStorage();
$this->mainColor = new Tx_Extbase_Persistence_ObjectStorage();
}
TCA / Cluster.php
'sub_colors' => array(
'exclude' => 1,
'label' => 'Sub-Colors',
'config' => array(
// edited
'type' => 'inline',
'internal_type' => 'db',
'allowed' => 'tx_alp_domain_model_colorcombination',
'foreign_table' => 'tx_alp_domain_model_colorcombination',
'MM' => 'tx_alp_cluster_subcolorcombination_mm',
'MM_opposite_field' => 'parent_cluster',
'size' => 6,
'autoSizeMax' => 30,
'maxitems' => 9999,
'multiple' => 0,
'selectedListStyle' => 'width:250px;',
'wizards' => array(
'_PADDING' => 5,
'_VERTICAL' => 1,
'suggest' => array(
'type' => 'suggest',
),
),
),
),
流体调试输出可以在这里找到:
http://i60.tinypic.com/28kluub.jpg
感谢您的帮助:( 抱歉我的英语不好,这是我的第一个问题,希望我做对了;)
答案 0 :(得分:2)
除非从模型到子模型之间存在1:1关系,否则无法访问子模型,因为子模型是ObjectStorage。
示例:
<强>域/型号/ Cluster.php 强>
/**
* Main Color of Cluster
* @var Tx_Alp_Domain_Model_ColorCombination $mainColor
*/
protected $mainColor;
这意味着Cluster模型具有一种主要颜色(注意注释),这是一个1:1的关系。
因此使用{cluster.mainColor.property}
将起作用。
你在做的是:
<强>域/型号/ Cluster.php 强>
/**
* Main Color of Cluster
* @var Tx_Extbase_Persistence_ObjectStorage<Tx_Alp_Domain_Model_ColorCombination> $mainColor
*/
protected $mainColor;
这意味着每个群集都可以有多种主要颜色,这是1:n关系。因此,您必须遍历mainColors(并调用属性$ mainColors):
<f:for each="{cluster.mainColors}" as="mainColor">
{mainColor.property}
</f:for>