【问题标题】:Autoloading modularity/widgets in PHP, CodeIgniter/Kohana在 PHP、CodeIgniter/Kohana 中自动加载模块化/小部件
【发布时间】:2010-01-24 13:10:52
【问题描述】:

我查看了许多模板库,所以我大致了解哪些是可以下载/使用的以及我想使用的,所以也许你可以帮助我。

我目前正在学习 CodeIgniter,考虑稍后搬到 Kohana。我想根据模板/站点的需要包含控制器/模块(可能是/模块功能?)。

示例,这样你就会明白: 我在 mysql 中保存了 xml 定义的页面,其中指出,在
<div id="sidebar">,我想使用新闻面板/小部件 - 类似于:
<div id="sidebar">{widget:news;3;60}</div>

我正在寻找模板解析器和/或的方法,所以在主应用程序中我加载页面,然后是模板。然后我查找使用哪些模块/小部件页面/模板并动态加载它们,传递参数(例如 news;3;60 - 模块新闻,最后 3 个,每个限制 60 个字符),并 echo 他们的结果代替我打电话给他们的地方。

这个用法应该是可以理解的——如果我在 27 页上使用新闻模块,只是在某处有最近 3 条新闻,在某处上个月,等等,我想简单地包含它并在一个地方编辑它。

我想到的其他问题是:我认为最好同时拥有所有模块(不要在那里加载一个,在这里加载一个),这样我就可以在一个地方访问数据库,等等。

我有点迷茫,也许有人会对我有一些想法:)

【问题讨论】:

    标签: php codeigniter kohana widget modularity


    【解决方案1】:

    两种最好的方法是:

    1. 使用我的CodeIgniter Dwoo implementation 并构建插件
    2. 使用wiredesignz'Widget plugin

    你当然可以使用 Smarty 插件,但是糟糕,谁还在使用 Smarty?

    请记住,在创建 Dwoo 插件时,CodeIgniter 实例可用于在该请求中加载的任何 PHP,因此您可以随时使用它的 Dwoo 插件、修饰符、块等:

    $CI =& get_instance();
    $CI->load->model('something');
    //etc
    

    【讨论】:

    • 谢谢你,Phil,会调查一下(稍后...:D) - 两者都可以在 Kohana 中实现吗?
    • 遗憾的是,Kohana 不再只是 CodeIgniter 的一个分支。这就像期望 CodeIgniter 代码在 CakePHP 中工作而不需要调整任何东西 - 不可能。不过,它应该不需要太多调整。
    • 也就是说,使用 Dwoo 选项意味着您可以将大部分代码构建为 Dwoo 插件/块,如果您切换框架,这将更容易。
    • 嗯,Phil,对您的 impl.、Dwoo 和 Widget 插件进行了小调查,看起来……比我想象的要麻烦得多。但是,如果结果是我希望的那样,那将是值得的 :) 但是,我想等待更多的答案,如果没有答案,你就是答案 :D
    • 酷。请记住,Dwoo 和 Widgets 是两个独立的建议,它们以两种截然不同的方式解决这个问题。 Dwoo 功能和块应该能够做你想做的一切,实现 Dwoo 是拖放 2 个文件。这是语法:wiki.dwoo.org/index.php/Functions:gravatar
    【解决方案2】:

    如果您使用的是 Kohana3,则可以使用 HMVC 功能。一种快速的方法是创建一个可以在视图中使用的辅助类。在您看来,您随后会调用此助手。这个助手会启动一个新的请求,触发正确的控制器/动作。

    Kohana 论坛中有某种小部件类,但这需要小部件的类,而不是通过 Kohana3 的 HMVC 功能使用(已经存在的?)控制器。

    【讨论】:

    • 嗯... CodeIgniter 小部件的实现也可以在 Kohana 中轻松实现。
    • 到时候我得去看看。除了检查一天左右之外,我从未真正使用过 CodeIgniter。
    猜你喜欢
    • 2022-12-16
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多