Переопределение контроллеров
Проблема с переопределением контроллеров
У Вас наблюдается такая проблема?
Обязательно убедитесь в этом! Если заработало пришлите содержание файла custom и в каком компоненте пробовали.
без подробностей, кода, текста ошибки и так далее никто ничего не подскажет.компонент перестает работать полностью
instantcms.ru/rules.html
<?php class users_custom extends users { public function test() { return false; } }
class users_custom extends users { public function __construct($request) { parent::__construct($request); } public function test() { return false; } }
Имя файла НЕ должно быть с таким названием.Имя файла должно быть users_custom.php
Да просто сначала была непонятна 270 строка core.phpГеннадий Иванович:
Имя файла должно быть users_custom.php
Имя файла НЕ должно быть с таким названием.
И сейчас получается так $custom_file = '/system/controllers/users_custom/custom.php'
строки отладчика
=> $custom_file = '/system/controllers/users_custom/custom.php' C:\usr\domains\204.icms\system\core\core.php:270
Warning: include_once(/system/controllers/users_custom/frontend.php)
Fatal error: Class 'users_custom' not found in \system\core\core.php on line 286
Сейчас пробую Ваше решение!
?Геннадий Иванович:
Создаем файл system/controllers/custom.php ???????
Зачем?
Да это при цитировании накладка получилась.
Попробую догадаться и предположить, что экшены, определенные в отдельных файлах, переопределить не получается, верно?
Не получается, потому, что ядро сначала проверяет наличие внешнего экшена, а потом уже ищет внутренние. Это поведение вероятно пересмотрится, а пока вам нужно в кастомном файле переопределить метод routeAction (не забывая вызывать родительский в начале) и добавить к названию экшена некий префикс. После чего уже создать экшен с новым названием. Это как один из вариантов, если очень надо.
p.s. в документации неточности видимо, которые будут исправлены.
Простое дублирование в ее в custom.php не дает результатов.
<?php class users_custom extends users { public function __construct($request) { parent::__construct($request); } // этот метод определен в frontend.php, здесь мы его переопределяем // при просмотре профиля на экране видим вывод функции dump public function getProfileMenu($profile){ dump($profile); } }