CI 2.1 + Modular Extensions 5.4 + IonAuth2がすべて機能しました。
私はこれに関する正確な情報を実際には見ていませんでした、そして私が見たものはルーティングやそれらが行われたように動作することができなかったもののようなものがたくさんあったので、私は私がしたことを共有することにしましたこれを達成するために。
最初は苦労していましたが、その後、何が起こっているのかを考えなければなりませんでした。
その後、それは実際にはかなり簡単で、ほんの2、3の落とし穴がありました…</ p>
IONAUTHをCodeIgniter+MXHMVCで動作させるために行った手順
CodeIgnterをインストールします(実際に作業中の既存のプロジェクトを使用したため、新しいクリーンインストールではありませんでした。「index.php」を削除し、HMVCに推奨される方法をすでにインストールしました。これはとにかくIon Authに関するものです。)
IonAuthの最新バージョンを入手してください。
Ion Authをにインストールする代わりにapplication/third_party
、解凍して、結果のディレクトリの名前をに変更しauth
ます。application/modules
結果が。になるように入れてくださいapplication/modules/auth
。
IonAuthの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
ディレクトリがないようにします-(これについては以下で必ずお読みください!!)。
ルート.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を更新してCI_ControllerではなくMX_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
!! したがって、すべてをdirからauth
dirに移動する必要がありviews
ます。
その後、すべてが正常に動作します!他のモジュールでモデル、ライブラリ、コントローラーをクロスロードでき、ビューやその他すべてでModules :: run()を実行できます。
これが他の誰かに役立つことを願っています。幸運を!