2012-01-09 52 views
2

我不确定这是否可能,但ExpressionEngine论坛和文档中的各种帖子都建议我应该能够让ExpressionEngine知道它所构建的CodeIgniter基础上发生了什么。通过ExpressionEngine访问CodeIgniter库

所以,鉴于此,我有一个CodeIgniter应用程序和一个ExpressionEngine网站。在/ system目录的结构是这样的:

/系统

  • /系统/笨
  • /系统/笨/应用程序(这是我现有的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

好了,感谢http://expressionengine.com/forums/viewthread/208140/我有一个答案,我想我可以建立在。

下面是它的工作原理,为后人的缘故:

EE和你的模块不知道在所有关于你的系统/笨/应用程序文件夹。试试这个,它>可能的工作:

$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

在过去,我已经写了简单的包装全部有关EE访问笨助理等Here's an example of a simple wrapper add-on

另一个选择,它应该可以用PHP来实现,这意味着你需要在你的模板中启用PHP。总之,你加载助手/库/等,然后调用你想要的方法。更多info on how to do that in the EE docs

+0

感谢您的帮助。我想我对EE如何了解CodeIgniter中的自定义库仍有点困惑?我原来的想法非常像你的例子,但似乎并不奏效。 正如我以前试过的,'$ this-> CI-> load-> library('libraryname');'只是返回一个错误。那有意义吗? – 2012-01-09 18:36:15

+0

我应该澄清一下:当我使用get_instance时,它确实知道CI本身;只是不是我的图书馆。 – 2012-01-09 18:44:06

+0

你有没有尝试把你的库放到EE库文件夹中? – 2012-01-10 01:04:57

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。 – 2012-01-10 16:47:26