2012-01-09 12 views
2

これが可能かどうかはわかりませんが、ExpressionEngineフォーラムやドキュメントのさまざまな投稿から、ExpressionEngineには、それが構築されているCodeIgniterファンデーションで何が起こっているのかを知ることができるはずです。ExpressionEngineからCodeIgniterライブラリへのアクセス

それで、私はCodeIgniterアプリとExpressionEngineサイトを持っています。

/システム

  • /システム/ CodeIgniterの
  • /システム/ CodeIgniterの/アプリケーション(これは私の既存のCodeIgniterアプリケーションです)
  • /システム/ CodeIgniterの:/システムディレクトリは、このように構成されています/システム(これはEEから実行同じCIフォルダである)

  • /システム/ ExpressionEngineの

  • ...(これは通常のEEである - テンプレート、アドオンなど

私はExpressionEngineのにかなり新しいですが、私の理解が、私はそれだろう建てEEモジュールには、この設定を使用するということでしたCodeIgniterとうまく統合できます。

現在、私はモジュールのセットアップ、およびちょうど出発点として、これを行い、その中に方法があります。この(

function __construct() 
{ 
    $this->EE =& get_instance(); 
    $this->CI =& get_instance(); 
    $this->auth =& $this->CI->load->library('mylibrary'); 
} 

をしかし、私はモジュールをロードするとき、それはライブラリを認識しません。この時点で、EEコントロールパネル内ですべてが起こっているので、2つの間を接続することができます)。それが存在しないと言います。この接続を確立するために何かできることはありますか、それとも間違った方向に向いていますか?

おかげで、過去には ジョナサン

答えて

2

さて、おかげで私は私が上に構築することができると思う答えを持っていhttp://expressionengine.com/forums/viewthread/208140/に。ここで

は、後世のために、それがどのように動作するかです:

EEと、あなたのモジュールは、システム/ CodeIgniterの/アプリケーションフォルダについては全く知りません。それは>働くかもしれない、これを試してみてください:

$this->EE =& get_instance(); 
$this->EE->load->add_package_path(BASEPATH.'../application/'); 
$this->EE->load->library('mylibrary'); 
$this->EE->mylibrary->do_stuff(); 

そこから私は自分のライブラリをロードすることができたが、それはその言語ファイルをロードする問題がありました。同じスレッドがその答えを出しました。このコードはCIライブラリファイルに格納され、読み込まれるとEEによって変換されます。

$this->ci->lang->load('mylangfile', '', FALSE, TRUE, BASEPATH.'../application/'); 
0

私はCodeIgniterのヘルパーなどHere's an example of a simple wrapper add-onにアクセスするためにEEのための単純なラッパーアドオンを書きました。

もう1つの選択肢として、これはPHPで可能である必要があります。つまり、テンプレートでPHPを有効にする必要があります。簡単に言えば、ヘルパー/ライブラリ/ etcをロードし、必要なメソッドを呼び出します。 More info on how to do that in the EE docs

+0

ありがとうございました。私は、CodeIgniterのカスタムライブラリについてEEがどのように知っているかについて、まだ少し混乱していると思いますか?私の元の考えはあなたの例に非常によく似ていましたが、うまくいかないようです。 前に試したように、 '$ this-> CI-> load-> library( 'libraryname');は単にエラーを返します。それは理にかなっていますか? –

+0

私は、get_instanceを使用するとCI自体について知っています。私の図書館だけではありません。 –

+0

ライブラリをEEライブラリフォルダに配置しようとしましたか? –

0

あなたは、単にそのようにようにそれをロードし、/third_party/my_addon/libraries/フォルダにライブラリを置く必要があります。

function __construct() 
{ 
    $this->EE =& get_instance(); 
    $this->auth = $this->EE->load->library('../third_party/mhy_addon/libraries/mylibrary'); 
} 
+0

私は、EEがCIアプリケーション自体を理解することができたと思っていました。おそらく、私が望んでいたことを説明する良い方法は、EEモジュールがCIコントローラを置き換えることができたと言うことです。だから_it_はCIライブラリをロードし、_it_はモデルを呼び出し、データなどを取得します。 しかし、これはpipedreamかもしれません。 –

関連する問題