Функция доступа в контроллере от помощника

StackOverflow https://stackoverflow.com/questions/1024658

  •  06-07-2019
  •  | 
  •  

Вопрос

Я только начал использовать CodeIgniter несколько часов назад и столкнулся с некоторыми проблемами. Я пытаюсь вызвать функцию, которая в данный момент находится в контроллере с именем admin.php . Я пытаюсь получить доступ к этому от помощника. Как бы я сделал это правильно? Я перепробовал почти все, но, похоже, ничего не работает, поскольку я получаю следующую ошибку:

Fatal error: Call to a member function login() on a non-object

Любая помощь по этому вопросу будет принята с благодарностью

Это было полезно?

Решение

Я согласен с Jimyi. Ваши вспомогательные и библиотечные классы должны быть независимыми от любого конкретного контроллера в приложении. Если у вас есть " заголовок страницы " помощник, например, это не должно зависеть от какого-либо конкретного поведения вашего администратора. Что, если вы хотите использовать помощник по страницам в другом приложении, в котором нет контроллера администратора? Или что, если вы внесете изменения в контроллер администратора в будущем, теперь вы должны убедиться, что эти изменения не сломают ваш помощник.

Если вашей вспомогательной функции требуется какой-то конкретный бит данных, который имеется у администратора, вы можете передать его в качестве параметра функции из контроллера. Таким образом, помощник является зависимостью от контроллера, а не контроллером является зависимость от помощника.

Кроме того, это сообщение об ошибке означает, что независимо от того, что вы вызываете, не было должным образом создано. Так что вы, вероятно, делаете что-то вроде:

$this->load();

из помощника. Однако в помощнике

$this
не определено (следовательно, ошибка «не объект»). CodeIgniter предоставляет способ загрузки моделей, библиотек и представлений вне контроллера. Но, насколько я знаю, это не позволяет вам делать это для контроллеров. Это нормально, хотя, по причинам, указанным выше. Будьте осторожны, когда вводите зависимости.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top