我得到了 CI 2.1 + Modular Extensions 5.4 + Ion Auth 2 全部工作。
因为,我并没有真正看到任何关于这方面的确切信息,而且我确实看到了很多东西,比如路由和我无法按照他们的方式工作的东西,我决定分享我所做的来实现这一点。
起初我很挣扎,但后来我不得不坐下来想想发生了什么。
在那之后,它实际上非常简单,只有几个问题......</p>
我为使 ION AUTH 与 CodeIgniter + MX HMVC 一起工作而采取的步骤
安装 CodeIgnter(我实际上使用了一个我正在处理的现有项目,所以它不是全新的安装。我删除了“index.php”并且我已经按照推荐的方式安装了 HMVC。无论如何这都是关于 Ion Auth 的。)
获取最新版本的 Ion Auth。
不要在 中安装 Ion Auth application/third_party
,而是解压缩它,然后将生成的目录重命名为auth
. 把它放在application/modules
结果中application/modules/auth
。
运行 Ion Auth 的 sql 来设置表。
将行更新为application/config/autoload.php
:
$autoload['libraries'] = array('database','session');
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')
modules/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
将 routes.php 文件添加到 modules/auth/config 并添加以下行:
$route['auth/(:any)'] = "auth/$1";
现在,去http://yoursite/auth
,一切都应该很好去!
陷阱
首先.. 不要自动application/config/autoload.php
加载文件中的库或模型。用 等在模块中明确地执行它们$this->load->library("whatever")
......</p>
那句话难倒了我好一阵子。
我忘了提到,在我当前的安装中,我已经从 URL 中删除了 index.php,并且在我的安装基础中有一个 .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>
==================================
当我更新 modules/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
控制器中。
解决此问题后,当我转到 时auth
,我会收到如下错误:
Unable to load the requested file: auth/login.php
views
显然,它在自己的目录中找不到视图文件。啊。不过仔细想想也不完全对。原因是因为它试图找到module/file_to_view
并且file_to_view
应该在views
!不在auth/views/auth
!!因此,我们需要将所有内容从auth
目录中移到views
目录中!
之后,一切正常!我可以在其他模块中交叉加载模型、库和控制器,并且可以在视图和其他所有内容中执行 Modules::run()!
我希望这对其他人有帮助。祝你好运!