[TYPO3-mvc] Overwriting TCA (fe_users)

Lang, Patrik Patrik.Lang at centaur.de
Wed Jul 14 16:05:50 CEST 2010


Hi Florian

> my mapping, ext_typoscript_setup.txt
> config.tx_extbase.persistence.classes {

Do you have this section for your extension too?

Like this:

---code---
plugin.tx_whoozshop.persistence.classes {
        Tx_WhoozShop_Domain_Model_Customer {
                mapping {
                        tableName = fe_users
                        columns {
                                crdate.mapOnProperty = crdate
                                is_online.mapOnProperty = isOnline
                                disable.mapOnProperty = disable
                                deleted.mapOnProperty = deleted
                                #tx_whoozshop_watchlist.mapOnProperty = watchlist
                        }
                }
        }
}
---code---

Because I think thats needed too.

I have a similar example. I have users extended from fe_users and a file model which can have many users and a user can have many files.

Here are my code:

---TS---
plugin.tx_xchange {
        persistence {
                classes {
                        Tx_Xchange_Domain_Model_User {
                                mapping {
                                        tableName = fe_users
                                        recordType = Tx_Xchange_Domain_Model_User
                                        columns.usergroup.foreignClass = Tx_Xchange_Domain_Model_Group
# In your case you have to add the following line
                                        columns.tx_whoozshop_watchlist.mapOnProperty = watchlist
                                }
                        }
                        Tx_Xchange_Domain_Model_Group {
                                mapping {
                                        tableName = fe_groups
                                        recordType = Tx_Xchange_Domain_Model_Group
                                        columns.subgroup.foreignClass = Tx_Xchange_Domain_Model_Group
                                }
                        }
                        Tx_Xchange_Domain_Model_File {
                                mapping.columns {
                                        fe_users {
                                                foreignClass = Tx_Xchange_Domain_Model_User
                                                mapOnProperty = users
                                        }
                                        fe_groups {
                                                foreignClass = Tx_Xchange_Domain_Model_Group
                                                mapOnProperty = usergroups
                                        }
                                        uploader.foreignClass = Tx_Xchange_Domain_Model_User
                                }
                        }
                }
        }
}

module.tx_xchange {
        persistence < plugin.tx_xchange.persistence
}

config.tx_extbase.persistence {
        updateReferenceIndex = 0
        enableAutomaticCacheClearing = 1
        classes {
                Tx_Extbase_Domain_Model_FrontendUser {
                        subclasses {
                                Tx_Xchange_Domain_Model_User = Tx_Xchange_Domain_Model_User
                        }
                }
                Tx_Extbase_Domain_Model_FrontendUserGroup {
                        subclasses {
                                Tx_Xchange_Domain_Model_Group = Tx_Xchange_Domain_Model_Group
                        }
                }

                Tx_Xchange_Domain_Model_User {
                        mapping {
                                tableName = fe_users
                                recordType = Tx_Xchange_Domain_Model_User
                                columns.usergroup.foreignClass = Tx_Xchange_Domain_Model_Group
# In your case you have to add the following line
                                columns.tx_whoozshop_watchlist.mapOnProperty = watchlist
                        }
                }
                Tx_Xchange_Domain_Model_Group {
                        mapping {
                                tableName = fe_groups
                                recordType = Tx_Xchange_Domain_Model_Group
                                columns.subgroup.foreignClass = Tx_Xchange_Domain_Model_Group
                        }
                }
                Tx_Xchange_Domain_Model_File {
                        mapping.columns {
                                fe_users {
                                        foreignClass = Tx_Xchange_Domain_Model_User
                                        mapOnProperty = users
                                }
                                fe_groups {
                                        foreignClass = Tx_Xchange_Domain_Model_Group
                                        mapOnProperty = usergroups
                                }
                                deleted.mapOnProperty = deleted
                                crdate.mapOnProperty = crdate
                                uploader.foreignClass = Tx_Xchange_Domain_Model_User
                        }
                }
        }
}
---TS---

Or you can rename the field tx_whoozshop_watchlist to simply watchlist in your ext_tables.sql

---TCA file (tca.php)---
                'fe_users' => array(
                        'exclude' => 1,
                        'label'   => 'LLL:EXT:'.$_EXTKEY.'/Resources/Private/Language/locallang_db.xml:tx_xchange_domain_model_file.fe_users',
                        'config' => array(
                                'type' => 'select',
                                'minitems' => 0,
                                'maxitems' => 9999,
                                'size' => 5,
                                'autoSizeMax' => 30,
                                'multiple' => 0,
                                'foreign_table' => 'fe_users',
                                'MM' => 'tx_xchange_file_fe_user_mm',
                        )
                ),
---TCA file (tca.php)---

---TCA fe_users (ext_tables.php)---
$tempColumns = array (
        'files' => array(
                'exclude' => 1,
                'label' => 'LLL:EXT:'.$_EXTKEY.'/Resources/Private/Language/locallang_db.xml:fe_users.files',
                'config' => array(
                        'type' => 'select',
                        'minitems' => 0,
                        'maxitems' => 9999,
                        'size' => 5,
                        'autoSizeMax' => 30,
                        'multiple' => 0,
                        'foreign_table' => 'tx_xchange_domain_model_file',
                        'foreign_where' => 'AND deleted = 0',
                        'MM_opposite_field' => 'uid_local',
                        'MM' => 'tx_xchange_file_fe_user_mm',
                )
        ),
);

t3lib_div::loadTCA('fe_users');
t3lib_extMgm::addTCAcolumns('fe_users',$tempColumns,1);
t3lib_extMgm::addToAllTCAtypes('fe_users','files', '', 'after:usergroup');
---TCA fe_users (ext_tables.php)---

In my case this works fine.

Greets
Patrik

________________________________

Diese Information ist ausschliesslich fuer die adressierte Person oder Organisation bestimmt und koennte vertrauliches und/oder privilegiertes Material enthalten. Personen oder Organisationen, fuer die diese Information nicht bestimmt ist, ist es nicht gestattet, diese zu lesen, erneut zu uebertragen, zu verbreiten, anderweitig zu verwenden oder sich durch sie veranlasst zu sehen, Massnahmen irgendeiner Art zu ergreifen. Sollten Sie diese Nachricht irrtuemlich erhalten haben, bitten wir Sie, sich mit dem Absender in Verbindung zu setzen und das Material von Ihrem Computer zu loeschen.

Sie haben uns gebeten, mit Ihnen ueber das Internet per E-Mail zu korrespondieren. Unbeschadet dessen ist allein die von uns unterzeichnete schriftliche Fassung verbindlich. Wir weisen darauf hin, dass derartige Nachrichten mit und ohne Zutun von Dritten verloren gehen, veraendert oder verfaelscht werden koennen. Herkoemmliche E-Mails sind nicht gegen den Zugriff von Dritten geschuetzt und deshalb ist auch die Vertraulichkeit unter Umstaenden nicht gewahrt Wir haften deshalb nicht fuer die Unversehrtheit von E-Mails nachdem sie unseren Herrschaftsbereich verlassen haben und koennen Ihnen hieraus entstehende Schaeden nicht ersetzen. Sollte trotz der von uns verwendeten Virus-Schutz-Programmen durch die Zusendung von E-Mails ein Virus in Ihre Systeme gelangen, haften wir nicht fuer eventuell hieraus entstehende Schaeden. Dieser Haftungsausschluss gilt nur soweit gesetzlich zulaessig.


More information about the TYPO3-project-typo3v4mvc mailing list