2014-02-06 57 views
0

我只是用兩個自己的Model類擴展現有的Typo3 4.7擴展。 它運行得非常好,Backendforms看起來像預期的那樣,但當我試圖通過對象訪問器{class.subclass.attribute}在模板中訪問我的模型類的某些子對象時我無法訪問該屬性。向我展示的問題是,例如在對象存儲中屬性「mainColor」的Object是一個HashCode,它包含我想要訪問的實際對象(哈希碼後面的對象是來自數據庫的正確相關對象) 。Extbase ObjectStorage返回一個哈希碼。但爲什麼?

有沒有人有問題可能的想法?

如果需要更多的代碼片段,我會提供它們。但是因爲我真的不知道問題來自哪裏,所以我寧願不要傳遞一段代碼。

域/型號/ 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

感謝您的任何幫助:( 和抱歉我的英語不好,這是我的第一個問題,希望我做得對;)

回答

2

除非從模型到子模型有1:1的關係,否則無法訪問子模型,因爲子模型是ObjectStorage。

實施例:

域/型號/ Cluster.php

/** 
* Main Color of Cluster 
* @var Tx_Alp_Domain_Model_ColorCombination $mainColor 
*/ 
protected $mainColor; 

這意味着羣集模型具有exacly一個主色(介意註解),這是一個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> 
+0

是的,我剛剛做了5分鐘纔回答,它工作正常。通過在調試窗口中看到散列,我想我只是感到困惑(而且很累)。無論如何感謝您的幫助! – SebastianB

相關問題