适用于Zend的Site Wide Class,可用于操作,控制器和视图?

时间:2014-01-17 15:05:20

标签: php zend-framework

如何创建基于ID获取角色或区域的网站范围功能。 还有一些事情,比如在视图中根据(实际/目标)的计算返回特定颜色。 我想在视图和动作中使用它。

我试过,创建一个类并在库中设置它:

class Colouring 
{
    /*
     * Array of the class for specifically the GEP portal theme
     */
    private $colours_class = array( 0 => 'color-grey',
                                1 => 'color-grey',
                                2 => 'color-orange',
                                3 => 'color-blue',
                                4 => 'color-green'
                            );

    /*
     * Returns colour based on actual and target
     */
    private static function getColour($actual, $target) 
    {
        ...return someValue

        }
}

路径:Zend_Site/library/

我收到错误:

Fatal error: Class 'Colouring' not found in

那么我认为也许我需要一个View_Helper:

所以我改变了路径:My/View/Helper/Colouring.php 和类:My_View_Helper_Colouring 将此添加到config.ini:resources.view.helperPath.My_View_Helper_ = "My/View/Helper/"

我用:

$viewHelperObj = $this->view->getHelper('Colouring');
$viewHelperObj->getColour($this->value, $this->divisor);

给予:Fatal error: Call to a member function getHelper() on a non-object

我也试过了:

$this->getColour($this->value, $this->divisor);

哪个给:

Plugin by name 'GetColour' was not found in the registry

因此,没有真正了解正确的做法,以便为站点范围内的事物添加静态方法,甚至是jsut一个站点范围的类和注册方式。我会使用插件,查看帮助程序,动作帮助程序还是只使用严格的类。

我正在使用Zend 1.

1 个答案:

答案 0 :(得分:1)

首先,您必须重命名该方法:getColour() to Colouring()并将其公开。 然后尝试从这样的视图中调用它:

echo $this->Colouring('biz', 'bazz');