5

我已经扩展了 pages 表,现在我想使用一个名为“Tags”的域对象中的一些数据。
所以我尝试了以下内容/Configuration/TypoScript/setup.txt

plugin.myextension.persistence.classes.Tx_myextension_Domain_Model_Tag {
    mapping {
        tableName = pages
        recordType = Tx_myextension_Domain_Model_Tag
        columns {
            tx_myextension_tag_name.mapOnProperty = name
            uid.mapOnProperty = id
        }
    }
}

但似乎扩展试图访问表 Tx_myextension_Domain_Model_Tag (不存在)

这是我收到的错误:

Tx_Extbase_Persistence_Storage_Exception_SqlError`

表 'tx_myextension_domain_model_tag' 不存在:SELECT tx_myextension_domain_model_tag.* FROM tx_myextension_domain_model_tag WHERE tx_myextension_domain_model_tag.id = '24' LIMIT 1

我做错了什么?

4

7 回答 7

3

不要忘记将您的扩展打字稿模板包含到您的模板中(模板 > 编辑整个模板 > 包含静态模板),否则您的 setup.txt 不会被评估。

于 2011-02-22T07:21:45.457 回答
3

要检查哪些记录类型是可接受的,请使用 BE 中的配置模块,在 $TCA 部分中找到您的表(在本例中为 [pages])并检查类型列(...[ctrl][type] - 对于页面,它是 'doktype ',它决定页面记录是标准页面还是 sysfolder 等)。

此列是数据库中的 tinyint(3),因此您不能将值 'Tx_myextension_Domain_Model_Tag' 写入其中。在您的 ext 中创建由数字标识的新 doktype 并将 recordType 设置为它。

如果页面类型对您无关紧要,您可以选择从映射配置中删除记录类型。

于 2012-01-25T16:27:18.803 回答
2

您是否尝试过“config.tx_extbase”而不是“plugin.myextension”?

就像是

config.tx_extbase.persistence.classes.Tx_MyExtension_Domain_Model_Tag.mapping.tableName = pages

为我工作。

于 2010-12-13T15:12:37.370 回答
0

您是否将各个页面指定为记录类型Tx_myextension_Domain_Model_Tag?它应该进入doctypepages 表的字段(因此您需要更改该字段的 mysql 数据类型。否则 Extbase 不知道该特定页面是 extbase 记录而不是常规页面。查看更多关于单Extbase 中的表继承(STI):http: //pascal-jungblut.com/blog/blog-post/2010/11/06/single-table-inheritance-in-extbase.html

于 2011-03-06T20:22:48.827 回答
0

Tx_myextension_Domain_Model_Tag 是您对象的名称对吗?但我想这不是您要访问的表的名称。所以我的猜测是,您在值“tableName”中提供的名称是错误的。“页面”包含什么?

于 2010-11-05T15:40:27.917 回答
0

注意有关 FE 插件的正确命名约定:

plugin.tx_myextension
于 2013-07-23T11:30:24.943 回答
0

您是否在使用 eID 的typo3 呼叫中执行此操作?这里有些配置没有加载..

如果是,请尝试加载所有配置是否可以解决问题:

    ...
    $GLOBALS['TSFE'] = \t3lib_div::makeInstance('tslib_fe', $TYPO3_CONF_VARS, $_GET["id"], 0, true);
    //$GLOBALS['TSFE'] = new $temp_TSFEclassName();
    $GLOBALS['TSFE']->connectToDB();
    $GLOBALS['TSFE']->initFEuser();
    $GLOBALS['TSFE']->determineId();
    $GLOBALS['TSFE']->getCompressedTCarray();
    $GLOBALS['TSFE']->initTemplate();
    $GLOBALS['TSFE']->getConfigArray();
    ...
于 2013-02-04T20:44:37.310 回答