Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
18.04.2006, 18:14 | #1 |
Продвинутый
Регистрация: 15.02.2005
Сообщений: 50
|
Как переопределить одн из методов в t3lib_befunc ?
Надо переписать одн из методов в классе t3lib_befunc, но не могу понять как
Думал , при помощи 'XCLASS', но для данного класса не подходит Зарание благодарен за помощь Последний раз редактировалось Boris; 20.04.2006 в 01:17 |
20.04.2006, 10:51 | #2 |
Senior Member
|
а что за метода? создавать extended t3lib_befunc наверняка невозможно. может просто переписать все методы по цепочке?
Последний раз редактировалось Дылгеров Ц.В.; 20.04.2006 в 13:00 |
22.04.2006, 00:56 | #3 |
Продвинутый
Регистрация: 15.02.2005
Сообщений: 50
|
Надо было изменить в t3lib_befunc::getProcessedValue значение $theColConf['MM'].
Так как использую ext:bidirectional, например для того что-бы в категориях можно было присваивать новости. Но тогда в WEB->Listview вместо категорий выводится N/A. Проапдейтил вчера на 4.0 и увидел, что в етой методе добавлен НООК Код:
if (is_array ($TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['preProcessValue'])) { foreach ($TYPO3_CONF_VARS['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['preProcessValue'] as $_funcRef) { t3lib_div::callUserFunction($_funcRef,$theColConf,$this); } } В своей функции меняю значение $theColConf['MM'] Код:
class tx_t3lib_befunc { function preProcessValue(&$theColConf,&$ref) { $MM_Table =$theColConf['MM']; if(strstr($MM_Table,"|")){ $parts = t3lib_div::trimExplode("|",$MM_Table,1); $theColConf['MM'] = $parts[0]; } //return $theColConf; } } Может обьясните почему? Пришлось возвращать в моей функции $theColConf ( return $theColConf ) А в t3lib_befunc править на: Код:
$theColConf =& t3lib_div::callUserFunction($_funcRef,$theColConf,$this); Но мне не нравится, что я сделал изменения прямо в ядре Может кто-нибудь подскажет, где была ошибка. Последний раз редактировалось Boris; 22.04.2006 в 13:15 |
25.04.2006, 06:19 | #4 | |
Senior Member
|
Очень интересная тема
Цитата:
Можно разобраться с передачей в ваш хук theColConf['MM'] - а это код двух функций - самой callUserFunction и с похожим названием, вызываемой из нее. А что в bidirectional не работает? у меня вроде работает. А куда вы вносите изменения - в сам bidirectional или создаете расширение только из-за хука? Последний раз редактировалось Дылгеров Ц.В.; 25.04.2006 в 06:30 |
|
25.04.2006, 18:12 | #5 | |
Senior Member
Регистрация: 05.04.2006
Сообщений: 105
|
Цитата:
|
|
27.04.2006, 02:25 | #6 | |||
Продвинутый
Регистрация: 15.02.2005
Сообщений: 50
|
Цитата:
Сам bidirectional работает без проблем. только в WEB->Listview выводится N/A(в поле 'связанных данных'). Цитата:
Потому-что для bidirectional прописывается в TCA: Код:
'MM' => 'tx_myext_table1_table2_mm | foreign' В $theColConf['MM'] ожидается только название таблици связей. Вносил я изменения в сам bidirectional (в принципе разницы нет) В ext_localconf.php добавил: Код:
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['preProcessValue'][] = 'tx_t3lib_befunc->preProcessValue'; Код:
require_once(t3lib_extMgm::extPath('bidirectional').'class.user_t3lib_befunc.php'); Код:
$GLOBALS ['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['preProcessValue'][] = 'EXT:bidirectional/class.ux_t3lib_befunc.php:tx_t3lib_befunc->preProcessValue'; Код:
class tx_t3lib_befunc { function preProcessValue(&$theColConf,&$ref) { $MM_Table =$theColConf['MM']; if(strstr($MM_Table,"|")){ $parts = t3lib_div::trimExplode("|",$MM_Table,1); $theColConf['MM'] = $parts[0]; } //debug($theColConf); //return $theColConf; } } Внутри моей методы проверяю(Debug), что содержимое $theColConf меняетя так как мне надо, а с 'наружи' нет. Проблема с референц! Почему правильно не отрабатывается не пойму. Хотя в доке написано: Цитата:
Последний раз редактировалось Boris; 27.04.2006 в 02:42 |
|||