Просмотр полной версии : Изменить TCA fe_users
Пишу такой код в своем TCA:
$TCA['fe_users']['columns']['telephone']['config']['type'] = 'select';
$TCA['fe_users']['columns']['telephone']['config']['foreign_table'] = 'tx_contacts_main';
а это поле так и остается input!! Не пойму в чем ошибка, может fe_users нельзя изменять TCA?
dmartynenko
10.10.2012, 15:31
Изменить можно все.
Почему может у вас не получаться:
1. Там где ваш код не объявлена глобальная переменная $TCA
2. Ваш код подключается до загрузки $TCA для fe_users
Изменить можно все.
Почему может у вас не получаться:
1. Там где ваш код не объявлена глобальная переменная $TCA
2. Ваш код подключается до загрузки $TCA для fe_users
Если я правильно понял то по первому предложению, 1. Там где ваш код не объявлена глобальная переменная $TCA, - $GLOBALS['TCA'] ['fe_users']['columns']['telephone']['config']['type'] = 'select';
Я такой код прописывал в собственном ext в tca.php, но оно не работает, через админку Настройки->$TCA(область настройки таблиц) показывает что все присвоено верно т.е. ['fe_users']['columns']['telephone']['config']['type'] = 'select'; но всё равно когда захожу в пользователей там input, а не selectbox.
2. Ваш код подключается до загрузки $TCA для fe_users
- А как это можно проследить что за чем прогружаетса?
dmartynenko
10.10.2012, 16:23
- А как это можно проследить что за чем прогружаетса?
Просто поищите по названию поля/таблицы все вхождения в typo3conf/temp_CACHED_xxxxxx_ext_tables.php
dmartynenko
10.10.2012, 16:27
Может у вас еще что-то не задано для select? Поэтому ядро и не понимает, а выводить что-то по дефолту (просто поле).
Вы можете кикстартером сделать экст, который добавляет ваше собственное поле в fe_users нужного вам типа. И посмотрите как и что он сгенерит для этого. А потом можете повторить то же самое на существующем поле.
Спасибо за то что направили в нужное русло все получилось.
Все таки проблема была в :
1. $GLOBALS['TCA'] – это первый мой вывод;
2. Нужно было ее обновлять не в myext/tca.php, a myext/ext_tables.php
Вот как все выгладить в коде:
global $GLOBALS;
t3lib_div::loadTCA('fe_users');
$GLOBALS['TCA']['fe_users']['columns']['telephone']['config']['type'] = 'select';
$GLOBALS['TCA']['fe_users']['columns']['telephone']['config']['foreign_table'] = 'tx_contacts_main';
СПАСИБО!!!!!
Но тут логически просто для понимания всей картины возникает вопрос:
1. В чём разница между $GLOBALS['TCA'] ['fe_users']['columns']['telephone']['config']['type'] = 'select'; и просто $TCA['fe_users']['columns']['telephone']['config']['type'] = 'select';. Какая разница между $GLOBALS['TCA'] и $TCA.
2. И почему я прописывал для других расширений $TCA['таблица]['columns']['поле']['config']['type'] = 'select'; - в файле myext/tca.php и оно работало, а в данном случае нужно было прописать в myext/ext_tables.php, да еще и вот так GLOBALS['TCA'] ['fe_users']['columns']['telephone']['config']['type'] = 'select';
Прошу если кто сталкивался объясните пожалуйста, хочу понять СПС
dmartynenko
10.10.2012, 17:32
Если вы в начале своего кода объявите global $TCA; то разницы никакой. В таком случае переменная с локальной видимостью $TCA становиться ссылкой на $GLOBALS['TCA']. По умолчанию переменная $TCA (и ей подобные) не объявлены.
Что касается порядка. Возможно (это мое предположение!) сначала все xxx/tca.php подключаются, потом все xxx/ext_tables.php. Если оказывается что ваш экст подключается после изменяемого, то изменение сработает через любой файл. А если до - то только через ext_tables.php
Если вы в начале своего кода объявите global $TCA; то разницы никакой. В таком случае переменная с локальной видимостью $TCA становиться ссылкой на $GLOBALS['TCA']. По умолчанию переменная $TCA (и ей подобные) не объявлены.
про писал в начале файла tca.php
global $TCA;
$TCA['fe_users']['columns']['telephone']['config']['type'] = 'select';
$TCA['fe_users']['columns']['telephone']['config']['foreign_table'] = 'tx_contacts_main'; и оно не работате, или я чет не так понял с вашего объяснения?
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot