Я только что переключился со стандартного CI на Codeigniter Skeleton с помощью HMVC. Я пытаюсь проверить, вошел ли пользователь в систему, и отобразить пункт меню в соответствии со статусом.
Этот код работает на стандартном CI с ion_auth:
<ul class="nav navbar-nav pull-right">
<!-- User Tab -->
<?php if (!$this->ion_auth->logged_in()): ?>
<li><a href="<?php echo site_url('auth/login'); ?>">Log in</a></li>
<?php else: ?>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
My Account <b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="<?php echo site_url('auth/logout'); ?>">Logout</a></li>
</ul>
</li>
<?php endif ?>
</ul>
Если я использую это с HMVC и ion_auth, я получаю следующую ошибку:
Обнаружена ошибка PHP
Серьезность: Уведомление
Сообщение: неопределенное свойство: CI :: $ ion_auth
Имя файла: MX / Loader.php
Номер строки: 279
Неустранимая ошибка: вызов функции-члена logged_in () для необъекта в C: \ wamp \ www \ myapp \ application \ views \ header.php в строке 59
Я попытался добавить библиотеку ion_auth в autoload.php, но затем я получаю ошибку «Cannot redeclare class Ion_auth» при нажатии на ссылку или при использовании любого из маршрутов ion_auth.
Я решил это, удалив следующую строку из application / modules / auth / controllers / auth.php
$this->load->library('authentication', NULL, 'ion_auth');
И добавив ‘ion_auth’ в autoload.php
Теперь я могу использовать функции ion_auth как в контроллерах, так и в представлении, и маршруты аутентификации по умолчанию, такие как / auth / login /, все еще работают, как и ожидалось.
Других решений пока нет …