0

我得到了一个模型,它具有一些属性,并且与同一扩展中的第二个模型具有 1:1 的关系,我想将第二个模型完全映射到 tt_content。所以用户可以在我的第一个模型中插入一个 tt_content 对象。

BE没有问题。我可以从第一个模型中插入对象,并在其中插入一个 tt_content 对象。在数据库中,我的第一个模型得到了 tt_content 对象的 uid 所在的“内容”列,所以我认为一切都是正确的......

但是到了控制器……我什么也没得到……只是“内容”属性上的一个空值……

这就是我测试“内容”属性的方式:

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

它只返回“NULL”

aaaaaand 这里是关于第一个模型 whitch 包含 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 设置中,我在“持久性”中添加了这个:

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

我只是不知道该配置中的错误在哪里......存储库/模型/任何东西都必须用第二个模型的对象自动填充第一个模型上的内容属性吗?至少一个空的?

4

2 回答 2

0

(由 OP 在问题编辑中回答。转换为社区 wiki 答案。请参阅没有答案的问题,但问题在评论中解决(或在聊天中扩展)

OP写道:

好吧,谜团解开了……

extension_builder 添加了一个名为“ext_typoscript_setup.txt”的文件。在该文件中有 tt_content 致命的“recordType”定义......删除了它,瞧......一切正常

于 2015-01-28T21:44:24.053 回答
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/

于 2015-07-24T04:22:41.657 回答