【发布时间】:2011-04-24 15:09:55
【问题描述】:
我正在开发一个项目,该项目允许高级用户定义自己的信息显示方式并访问一些基本 API。比如我提供了一个show_search_box()函数,这样用户可以在需要显示标准搜索框的时候在视图文件中调用这个函数,也可以带参数调用这个函数来自定义搜索表单。
例如模板中的此代码将显示带有水印文本“在此处输入关键字”的搜索表单。
<div><?php show_search_box('Enter keyword here'); ?></div>
我的想法实际上与 WordPress 在其模板标签中所做的完全一样。 (http://codex.wordpress.org/Stepping_Into_Template_Tags)
我的想法是创建一个提供所有这些 API 函数的类,并将该类的对象实例传递给视图文件,以便用户可以在视图中调用 API 函数,如下所示:
<div><?php $API->show_search_box('Enter keyword here'); ?></div>
我认为它会起作用,(但尚未对其进行测试),但我更喜欢提供一组直接调用的函数,就像 WordPress 一样。使用 kohana 3 执行此操作的最佳方法是什么?
======更新:我已经测试了传递 $API 对象到视图的方法,它按预期工作。
class API {
public function show_search_box($watermark){....}
}
在控制器中,将 $API 传递给视图/模板
public function action_index()
{
$this->template->API = new API();
}
然后如上所述调用视图/模板中的函数。 与那些控制器方法不同,$API 不能访问控制器的变量,除非它们被显式分配:例如$API->setVar('VarName', $a_controller_variable),我觉得这很乏味。
【问题讨论】:
标签: api templates function view kohana