Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Тематические форумы > Разработка расширений / TYPO3 extension development

Ответ
 
Опции темы Опции просмотра
Старый 08.10.2012, 13:55   #1
brd
Продвинутый
 
Регистрация: 16.06.2011
Сообщений: 96
Post Изменить 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?
brd вне форума   Ответить с цитированием
Старый 10.10.2012, 15:31   #2
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Изменить можно все.
Почему может у вас не получаться:
1. Там где ваш код не объявлена глобальная переменная $TCA
2. Ваш код подключается до загрузки $TCA для fe_users
dmartynenko вне форума   Ответить с цитированием
Старый 10.10.2012, 16:03   #3
brd
Продвинутый
 
Регистрация: 16.06.2011
Сообщений: 96
Post Если я правильно понял Вас?

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Изменить можно все.
Почему может у вас не получаться:
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.
brd вне форума   Ответить с цитированием
Старый 10.10.2012, 16:09   #4
brd
Продвинутый
 
Регистрация: 16.06.2011
Сообщений: 96
Post А как это можно проследить что за чем прогружаетса?

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
2. Ваш код подключается до загрузки $TCA для fe_users
- А как это можно проследить что за чем прогружаетса?
brd вне форума   Ответить с цитированием
Старый 10.10.2012, 16:23   #5
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Цитата:
Сообщение от brd Посмотреть сообщение
- А как это можно проследить что за чем прогружаетса?
Просто поищите по названию поля/таблицы все вхождения в typo3conf/temp_CACHED_xxxxxx_ext_tables.php
dmartynenko вне форума   Ответить с цитированием
Старый 10.10.2012, 16:27   #6
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Может у вас еще что-то не задано для select? Поэтому ядро и не понимает, а выводить что-то по дефолту (просто поле).

Вы можете кикстартером сделать экст, который добавляет ваше собственное поле в fe_users нужного вам типа. И посмотрите как и что он сгенерит для этого. А потом можете повторить то же самое на существующем поле.
dmartynenko вне форума   Ответить с цитированием
Старый 10.10.2012, 16:32   #7
brd
Продвинутый
 
Регистрация: 16.06.2011
Сообщений: 96
Thumbs up Спасибо за то что направили в нужное русло все получилось

Спасибо за то что направили в нужное русло все получилось.
Все таки проблема была в :
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';
СПАСИБО!!!!!
brd вне форума   Ответить с цитированием
Старый 10.10.2012, 16:43   #8
brd
Продвинутый
 
Регистрация: 16.06.2011
Сообщений: 96
Post Все работает, это просто вопрос для понятия полноты картины.

Но тут логически просто для понимания всей картины возникает вопрос:
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';
Прошу если кто сталкивался объясните пожалуйста, хочу понять СПС
brd вне форума   Ответить с цитированием
Старый 10.10.2012, 17:32   #9
dmartynenko
Senior Member
 
Аватар для dmartynenko
 
Регистрация: 20.07.2007
Адрес: Беларусь, Минск
Сообщений: 957
Отправить сообщение для dmartynenko с помощью ICQ
По умолчанию

Если вы в начале своего кода объявите global $TCA; то разницы никакой. В таком случае переменная с локальной видимостью $TCA становиться ссылкой на $GLOBALS['TCA']. По умолчанию переменная $TCA (и ей подобные) не объявлены.

Что касается порядка. Возможно (это мое предположение!) сначала все xxx/tca.php подключаются, потом все xxx/ext_tables.php. Если оказывается что ваш экст подключается после изменяемого, то изменение сработает через любой файл. А если до - то только через ext_tables.php
dmartynenko вне форума   Ответить с цитированием
Старый 10.10.2012, 17:54   #10
brd
Продвинутый
 
Регистрация: 16.06.2011
Сообщений: 96
Lightbulb Не работает

Цитата:
Сообщение от dmartynenko Посмотреть сообщение
Если вы в начале своего кода объявите 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';
и оно не работате, или я чет не так понял с вашего объяснения?
brd вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод данных в TCA brd Разработка расширений / TYPO3 extension development 2 23.02.2012 12:56
Как создать свой тип поля в TCA, либо перехватить данные при сохранении формы. almaz Разработка расширений / TYPO3 extension development 2 16.06.2011 16:46
НУЖНА ПОМОЩЬ!!! ИЗМЕНИТЬ СЛОВО В ШАБЛОНЕ!!! УБИЛСЯ насмерть - не могу найти - где???? ACROBAT Общие вопросы 1 24.04.2010 17:30
Модификация TCA при помощи Dynaflex reva2 Общие вопросы 2 17.01.2008 14:54
не могу изменить значение memory_limit D Sydorovich Установка 6 18.10.2004 08:59


Часовой пояс GMT +4, время: 19:07.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория