【问题标题】:CakePHP override plugin methodCakePHP 覆盖插件方法
【发布时间】:2014-04-29 03:27:17
【问题描述】:

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

代替

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

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

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

覆盖此方法的最佳实践方式是什么?我要创建另一个扩展 TagCloudHelper 的类吗?那么我如何告诉 CakePHP 使用我的类而不是插件的类呢?

【问题讨论】:

    标签: cakephp cakephp-2.4


    【解决方案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 选项让您为助手的名称起别名

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-21
      • 1970-01-01
      • 2011-10-31
      • 2012-07-15
      • 1970-01-01
      • 2011-12-05
      • 2014-11-03
      • 2019-08-18
      相关资源
      最近更新 更多