这个方法在zend框架中属于哪里?

时间:2012-04-17 15:23:10

标签: zend-framework

我有一些可重复使用的函数,我想在我的控制器中使用它来操纵控制器中的ajax数据。因为控制器没有视图(因为它是AJAX)。我想知道以下方法在Zend Framework中的合法属性

function blockUnblock($value, $id) {
    $image = ($value == 0) ? 'tick.png' : 'tock.png';
    $alt = ($value == 0) ? 'Yes' : 'No';
    $src = '<a class="toggle" href="#toggle">';
    $src .= '<img src = "/css/images/'.$image.'" alt = "'.$alt.'" data-id = "'.$id.'" data-block = "'.$value.'"/>';
    $src .= '</a>';
    return $src;
}

我需要在各种控制器和操作中重用此方法。

它属于哪种辅助方法?

2 个答案:

答案 0 :(得分:4)

由于你的函数是格式化html,我认为它属于View Helper。我假设你正在使用带有json格式的AjaxContext(这就是为什么你不需要这个动作的viewcript的原因)。但是,您可以使用以下方法从控制器调用任何视图帮助程序:

$imageLink = $this->view->blockUnblock($value, $id);
$this->view->imageLink = $imageLink;

你的助手看起来像这样:

// .../views/helpers/BlockUnblock.php
class Zend_View_Helper_BlockUnblock extends Zend_View_Helper_Abstract
{

    public function blockUnblock($value, $id)
    {
        $image = ($value == 0) ? 'tick.png' : 'tock.png';
        $alt = ($value == 0) ? 'Yes' : 'No';
        $src = '<a class="toggle" href="#toggle">';
        $src .= '<img src = "/css/images/'.$image.'" alt = "'.$alt.'" data-id = "'.$id.'" data-block = "'.$value.'"/>';
        $src .= '</a>';
        return $src;
    }
}

答案 1 :(得分:2)

这个问题有(至少)两种方法。

首先是创建一个自定义控制器并从中扩展所有其他控制器。这样,所有控制器/操作都可以访问此功能。

第二个是创建一个动作视图助手。这将允许在您可以访问视图对象的地方调用函数(或本例中的类)。