helper顾名思义就是帮助类,主要运用于视图view层.
CakePHP在设计之初就充分考虑到了扩充性,在view中,常常会遇到需要处理的并且会多次重复使用到的框架,元素,部份数据...譬如:图表,编辑器等.
这个时候,就是helper大显身手的时候:
在CakePHP中,
helper一般位于app/view/helper/目录下,当然这里指的是自己扩充的helper.
helper其实就是一个类库,他的命名也应该遵循CakePHP的相关{
变形}法则.
像引入Tinymce编辑器的一个常用的helper帮助类如下:
class TinymceHelper extends Helper{
// to do ...
//在helpers中引入其它helper
var $helpers = array('javascript');
//变量,规定tiny_mce.js的存放相对路径
var $tinymce_url = 'tiny_mce.js';
var $options = array(
'mode' => 'textareas',
'elements' => "NodeBody",
'theme' => 'advanced',
'plugins' =>"..."
);
function init($options = false){
$configs = '';
if(isset($this->javascript))
echo $this->javascript->link($this->tinymce_src);
$this->options = ($options && is_array($options))?array_merge($this->$options, $options):$this->$options;
foreach($this->options as $k=>$v)
$configs .= "$k : \"$v\",\n";
return $this->javascript->codeBlock("
tinyMCE.init({
$configs
});
");
}
}
ok,这样定义好helper之后,我们
还需要在相应的controller中引入它:
//定义helpers变量
var $helpers = array('Html','Tinymce');
有的时候并不希望它在每次controller初始化都被加载,则可以在想要使用的
对应action中这样来引入:
$this->helpers[] = 'Tinymce';
好了,现在,你要做的就是在view中来使用它了:
//默认的加载
echo $tinymce->init();
这样,你就可以在view中看到textareas被加载上编辑器的效果了.