2012-12-03 1 views
1

Существует помощник, который я хотел бы использовать внутри основного класса, CI_Router (MY_Router, чтобы быть более точным). В этом настраиваемом маршрутизаторе я внесла некоторые изменения в исходный код, чтобы иметь возможность вставлять дефисы в мои URL-адреса. Я, как обычно, определил помощник в файле autoload.php, но кажется, что я не могу называть вспомогательную функцию внутри класса, отличного от представления или контроллера.Использование вспомогательной функции внутри базового класса в CodeIgniter

Любые идеи о том, как с этим справиться? Мой первоначальный подход состоял в том, чтобы использовать помощника, поэтому я могу использовать его в любом месте, которое я хочу.

TYVM.

ответ

1

Помощники не создаются экземпляр до тех пор, пока не заработает ядро, поэтому он не работает.

Вы либо должны:

  1. Дублируйте функцию в MY_Router класса, или,
  2. ReThink почему вы могли бы использовать ту же функцию в маршрутизаторе, который используется в стандартном контроллере или представлении ,

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

+0

ok ... выбор номер один сделаю сейчас, думаю, потому что я спешу. Но было бы очень приятно узнать, что есть лучший способ сделать это. Спасибо. – darksoulsong

+0

Взгляните на http://ellislab.com/codeigniter/user-guide/general/hooks.html - вы можете использовать крюк 'pre_system', но у вас не будет доступа к каким-либо материалам CI, поэтому если ваша функция зависит от любого из них, то вам не повезло. – Brendan

0

Вы можете попробовать получить экземпляр основного объекта CI и установить его в переменную, а затем загрузить помощника, используя это. Пример:

$ci =& get_instance(); 
$ci->load->helper('date'); 

Я знаю, что работает в других областях, а не на 100% уверенном в каких-либо классах маршрутизаторов.