开发者

extbase mapping to an existing table doesn't work

I've extended the pages table and now I want to use some of the data in a domain object called "Tags".

So I tried the following in the /Configur开发者_运维百科ation/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
        }
    }
}

But It seems that the extension tries to access the table Tx_myextension_Domain_Model_Tag (which doesn't exist)

This is the error I receive:

Tx_Extbase_Persistence_Storage_Exception_SqlError`

Table 'tx_myextension_domain_model_tag' doesn't exist: SELECT tx_myextension_domain_model_tag.* FROM tx_myextension_domain_model_tag WHERE tx_myextension_domain_model_tag.id = '24' LIMIT 1

What have I done wrong?


Don't forget to include your extension typoscript template into your template ( template > edit whole template > include static templates ), otherwise your setup.txt is not evaluated.


To check which recordType(s) are acceptable use Configuration module in BE, in $TCA section find your table ([pages] in this case) and check type column (...[ctrl][type] - for pages it's 'doktype', which decides if page record is standard page or sysfolder etc.).

This column is tinyint(3) in database, so you can not write value 'Tx_myextension_Domain_Model_Tag' to it. Create in your ext new doktype identified by number and set recordType to it.

Optionaly you can just remove recordType from mapping config if page's type doesn't matter to you.


did you try "config.tx_extbase" instead of "plugin.myextension"?

Something like

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

works for me.


Tx_myextension_Domain_Model_Tag is the name of your object right ? But I guess this is not the name of the table you are trying to access. So my guess is that the name you are providing into the value "tableName" is wrong. What does "pages" contain ?


Have you specified the individual pages as recordtype Tx_myextension_Domain_Model_Tag ? It's supposed to go into the doctype field of the pages table (therefore you'll need to change the mysql datatype of that field. Otherwise Extbase doesn't know that this specific page is an extbase record and not a regular page. See more about single table inheritance (STI) in Extbase: http://pascal-jungblut.com/blog/blog-post/2010/11/06/single-table-inheritance-in-extbase.html


do you do this in a typo3 call with eID? here some configuration is not loaded ..

if yes, try if loading all configuration solves the problem:

    ...
    $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();
    ...


Take care of the proper naming convention regarding FE-Plugins:

plugin.tx_myextension
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜