2012-01-11 100 views
0

在codeigniter中,我们有mvc框架,模型,视图,库等的标准类。我想将自己的子对象添加到CodeIgniter中,我该如何最好地去解决这个问题?例如:如何在CodeIgniter中添加自定义对象类型?

目录:

controllers 
core 
helpers 
etc.. 
widgets //custom object type 

核心的里面,我可以有一个My_Widget类,一切都在widget文件夹将延长。然后,控制器里面我能有这样的:

$this->load->widget('Example_Widget'); 
+0

我已经更新了我的答案。我发现了一个很好的例子,说明你正在尝试做什么。 – birderic 2012-01-12 15:03:51

回答

2

我从来没有做过这个,所以我不能为您提供一个完整的解决方案,但我至少可以尝试你指出正确的方向。请参考/system/core/Loader.php中的装载机类。这是您在使用$this->load时访问的内容。它包含许多用于加载不同类型资源(模型,库等)的方法。您可以通过复制model()方法,将其重命名为widget(),并更新路径以检查/application/widgets目录。您可能需要做更多的工作,比如创建一个CI_Widget基类,但是您应该能够逐行浏览该方法,并找出它需要的工作方式。

我希望这会有所帮助。

编辑(2012/1/12):

这里是有人延伸笨以支持自定义资源类型的一个例子。

Sparks是CodeIgniter的包管理系统,很像RubyGems for Ruby。使用火花很简单。一旦你修改了你的CodeIgniter环境来支持火花,你只需安装火花,然后使用$this->load->spark('...');加载它。修改您的CodeIgniter环境以支持火花只需要扩展装载程序类以支持新的方法sparks()

修改装载机类的代码可用here。遵循该文件中的模式,您应该可以实现加载自己的自定义资源类型。在我之前的回答中,我说过你可以通过修改/system/core/Loader.php文件逃脱,但我建议你遵循火花使用的方法并使用/application/core/MY_Loader.php文件。

+0

哇,我希望我可以投你的答案两次。一个用于很好的答案,一个用于向我展示火花。这看起来非常方便。 – GSto 2012-01-12 19:35:07

相关问题