CakePHP覆盖插件方法

时间:2014-04-29 03:27:17

标签: cakephp cakephp-2.4

我在CakePHP项目中使用CakeDC标签插件。我使用TagCloudHelper输出链接列表,但是这个帮助器不是按照我想要的方式格式化链接。具体而言,方法_tagUrl($tag, $options)正在生成具有命名参数的链接,而不是使用查询字符串。

而不是

$options['url'][$options['named']] = $tag[$options['tagModel']]['keyname'];

我通过以下更改获得了所需的行为

$options['url']['?'][$options['named']] = $tag[$options['tagModel']]['keyname']; 

覆盖此方法的最佳做法是什么?我是否创建了另一个扩展TagCloudHelper的类?那么我怎么告诉CakePHP使用我的类而不是插件?

1 个答案:

答案 0 :(得分:1)

我能够用我自己的

覆盖帮助器
// app/View/Helper/MyTagCloudHelper.php
App::uses('TagCloudHelper', 'Tags.View/Helper');

class MyTagCloudHelper extends TagCloudHelper {
    protected function _tagUrl($tag, $options) {
        $options['url']['?'][$options['named']] = $tag[$options['tagModel']]['keyname'];
        return $options['url'];
    }
}

然后在控制器中

public $helpers = array('TagCloud' => array('className'=>'MyTagCloud'));

className选项让您为帮助者的名称添加别名