Я получил CI 2.1 + Modular Extensions 5.4 + Ion Auth 2. все работает.
С тех пор, как я не видел точной информации об этом, и у того, что я видел, было множество вещей вродемаршрутизация и прочее, что я не мог заставить работать так, как они были сделаны, я решил поделиться тем, что я сделал, чтобы достигнуть этого.
Сначала я боролся с этим, но затем я должен был сидеть сложа руки иПодумайте о том, что происходит.
После этого все было довольно просто, только пара ошибок ...
Шаги, которые я предпринял, чтобы ION AUTH работал с CodeIgniter + MX HMVC
Установите CodeIgnter (я фактически использовал существующий проект, над которым работал, поэтому это не была новая чистая установка. Я удалил «index.php», и у меня уже был установлен HMVC, рекомендуемыйВ любом случае, речь идет об Ion Auth.)
Получите последнюю версию Ion Auth.
Вместо установки Ion Auth в application/third_party
, Распакуйте его и переименуйте получившийся прямойОри до auth
.Поместите его в application/modules
, что приведет к application/modules/auth
.
Запустите sql Ion Auth для настройки таблиц.
In application/config/autoload.php
обновить строку:
$autoload['libraries'] = array('database','session');
In modules/auth/libraries/Ion_auth.php
обновить строки в __construct
до:
$this->ci->load->config('auth/ion_auth', TRUE);
$this->ci->load->library('email');
$this->ci->load->library('session');
$this->ci->lang->load('auth/ion_auth');
$this->ci->load->model('auth/ion_auth_model')
Inmodules/auth/models/ion_auth_model.php
обновить строки в __construct
до:
$this->load->config('auth/ion_auth', TRUE);
$this->load->helper('cookie');
$this->load->helper('date');
$this->load->library('session');
$this->lang->load('auth/ion_auth');
Измените контроллер auth
(modules/auth/controllers/auth.php
) на расширение MX_Controller
вместо значения по умолчанию CI_Controller
.
Теперь, в auth.php
, убедитесь, что вы изменили все $this->data
на $data
- (Обязательно прочитайте об этом ниже !!).
Переместите файлы и каталоги в modules/auth/views/auth
в modules/auth/views
, в результате чего modules/auth/views
без нижнего уровня auth
dir - (Обязательно прочитайте об этом ниже !!).
Добавьте файл rout.php в modules / auth / config и добавьте следующую строку:
$route['auth/(:any)'] = "auth/$1";
Теперь перейдите на http://yoursite/auth
и вседолжно быть хорошо, чтобы идти!
Gotchas
Прежде всего .. НЕ РАЗГРУЖАЙТЕ БИБЛИОТЕКИ ИЛИ МОДЕЛИ в tон application/config/autoload.php
файл.Делайте их в модулях явным образом с помощью $this->load->library("whatever")
и т. Д. *
Это меня давно озадачило.
Я забыл упомянуть, что в своей текущей установке я уже удалил индекс.php из URL, и у меня есть файл .htaccess в основе моей установки.Если что-то не работает, возможно, это что-то с RewriteBase здесь.Я использую этот .htaccess:
## Set up mod_rewrite
<IfModule mod_rewrite.c>
Options +MultiViews +FollowSymLinks
DirectoryIndex index.php index.html
# Enable Rewrite Engine
# ------------------------------
RewriteEngine On
# UPDATE THIS TO POINT TO where you installed this FROM YOUR DOC ROOT.
# If this is in the DOC ROOT, leave it as it is
#---------------------
RewriteBase /
# In case your hosting service doesn't add or remove 'www.' for you, you can
# do it here by uncommenting and updating the 'Rewrite*'s below.
#
# Add or remove 'www.' Whichever you prefer.
# This one removes the 'www.' which seems to be the favorable choice these days.
# ------------------------------
#RewriteCond %{HTTP_HOST} ^www.<sitename>.com
#RewriteRule (.*) http://<sitename>.com/$1 [R=301,L]
# Redirect index.php Requests
# ------------------------------
RewriteCond %{THE_REQUEST} ^GET.*index\.php [NC]
RewriteCond %{THE_REQUEST} !/system/.*
RewriteRule (.*?)index\.php/*(.*) $1$2 [R=301,L]
# Standard ExpressionEngine Rewrite
# ------------------------------
RewriteRule modules/(.+)/controllers/(.+)\.php$ /index.php?/$1/$2 [L,R=301]
RewriteRule controllers/(.+)\.php$ /index.php?/$1 [L,R=301]
RewriteCond $1 !\.(css|js|gif|jpe?g|png) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
================================
Когда я обновил модули / auth / controllers / auth.php, чтобы расширить MX_Controller вместо CI_Controller, после этого я получил ряд ошибок.Первая из этих ошибок:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: CI::$data
Filename: MX/Controller.php
Чтобы устранить эту ошибку, я изменил все $this->data
на $data
в auth.php
controller`.
После исправления этой проблемы,когда я переходил к auth
, я получал ошибку, подобную этой:
Unable to load the requested file: auth/login.php
По-видимому, он не может найти файлы просмотра в своем собственном views
каталоге.Ааа.Не совсем верно, хотя, подумав об этом.Причина в том, что он пытается найти module/file_to_view
, а file_to_view
должно быть в views
!Не в auth/views/auth
!!Итак, нам нужно переместить все вверх из auth
dir в views
dir!
После этого все работает нормально!Я могу перекрестно загружать модели, библиотеки и контроллеры в другие модули, и я могу делать Modules :: run () в представлениях и все остальное!
Надеюсь, это поможет кому-то еще.Удачи!