2012-09-10 31 views
0

我得到了一個模型,它具有一些屬性,並在同一擴展中與我的第二個模型有1:1的關係,並且我想將第二個模型完全映射到tt_content。 所以用戶可以在我的第一個模型中插入一個tt_content對象。如何在自己的extbase擴展中映射tt_content?

BE中沒有問題。我可以從第一個模型插入對象,並在那裏插入一個tt_content對象。在數據庫中,我的第一個模型得到了「內容」列的tt_content對象的uid,所以我認爲一切都是正確的...

但是,然後到控制器...我什麼都沒有...只是一個NULL在「內容」的屬性值...

這是我測試的「內容」屬性:

$contentBoxes = $this->contentBoxRepository->findAll(); 
print(gettype($contentBoxes->current()->getContent())); 

,並返回只是「NULL」

aaaaaand這裏有關於一些相關信息第一個模型包含tt_content對象:

第一模型:

class Tx_PlusbSlidingcontent_Domain_Model_ContentBox extends Tx_Extbase_DomainObject_AbstractEntity { 

    /** 
    * Content 
    * 
    * @var Tx_PlusbSlidingcontent_Domain_Model_Content 
    */ 
    protected $content; 

........... 

    /** 
    * Returns the content 
    * 
    * @return Tx_PlusbSlidingcontent_Domain_Model_Content $content 
    */ 
    public function getContent() { 
     return $this->content; 
    } 

    /** 
    * Sets the content 
    * 
    * @param Tx_PlusbSlidingcontent_Domain_Model_Content $content 
    * @return void 
    */ 
    public function setContent(Tx_PlusbSlidingcontent_Domain_Model_Content $content) { 
     $this->content = $content; 
    } 

............... 
} 

第二模型:

class Tx_PlusbSlidingcontent_Domain_Model_Content extends Tx_Extbase_DomainObject_AbstractEntity { 

} 

在第一模式的TCA的 「內容」 部分:

'content' => array(
     'exclude' => 0, 
     'label' => 'LLL:EXT:plusb_slidingcontent/Resources/Private/Language/locallang_db.xml:tx_plusbslidingcontent_domain_model_contentbox.content', 
     'config' => array(
      'type' => 'inline', 
      'foreign_table' => 'tt_content', 
      'minitems' => 0, 
      'maxitems' => 1, 
      'appearance' => array(
       'collapseAll' => 0, 
       'levelLinksPosition' => 'top', 
       'showSynchronizationLink' => 1, 
       'showPossibleLocalizationRecords' => 1, 
       'showAllLocalizationLink' => 1 
      ), 
     ), 
    ), 

而在TS設置I在「持久性」中加入了這個:

classes { 
     Tx_PlusbSlidingcontent_Domain_Model_Content { 
      mapping { 
       tableName = tt_content 
       columns { 
       } 
      } 
     } 
    } 

我只是不知道該錯誤在哪裏配置...不存儲庫/模型/任何東西都必須自動填充第一個模型的內容屬性與第二個模型的對象?至少是空的?

+1

請考慮回答自己的問題,當你找到一個解決方案,以紀念這個問題解決了。 – nemo

回答

0

是的,它很容易將tt_content字段集成到您的擴展。

如果你想設置你的tt_content記錄第二個標題字段,那麼你必須設置你的ext_table.php下面的腳本

$tempColumns = array(
    'subtitle' => array(
     'exclude' => 0, 
     'label' => 'title2', 
     'config' => array(
      'type' => 'input' 
     ) 
    ) 
); 

然後,你必須加載tt_content TCA文件

#This is for EXTBASE Extension 
\TYPO3\CMS\Core\Utility\GeneralUtility::loadTCA('tt_content'); 

OR 

#This is for PI Base Extension 
t3lib_div::loadTCA("tx_dam_cat"); 

以下字段將用戶使用「特定擴展」,然後使用以下腳本。

$TCA["tt_content"]["types"]["list"]["subtypes_excludelist"]["abc_pqr"]="layout,select_key,pages"; 
$TCA["tt_content"]["types"]["list"]["subtypes_addlist"]["abc_pqr"]="subtitle;;;;1-1-1"; 

有關它的更多信息,參觀

https://jainishsenjaliya.wordpress.com/2014/08/25/how-to-use-tt_content-fields-in-custom-plugin-of-typo3/