向Zend Framework应用程序添加图标的最佳做法是什么?

时间:2010-09-16 13:48:02

标签: zend-framework views

我想在我的应用程序中添加图标。我把图标放在public_html / images / icons /中,我希望用干的方式将它们放在我的视图脚本中。所以我最好不要重复..

<img src="<?php echo $this->baseUrl();?>/images/icons/plus-circle.png"</a>

..为每个图标。 我更喜欢简单的对象+函数调用。 这是什么最佳做法?

怀疑我应该使用一个视图帮助器,但我还不完全理解它们。

谢谢!

4 个答案:

答案 0 :(得分:2)

我会使用View Helper。

class My_View_Helper_Icon extends Zend_View_Helper_Abstract
{

    public function icon($icon)
    {
        // not sure if you can use $this->baseUrl(); inside view helper
        $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();
        $xhtml = sprintf('<img src="%s/images/icons/%s"', $baseUrl, $icon);

        return $xhtml;
    }

}

在您的视图中

echo $this->icon('plus-circle.png');

答案 1 :(得分:0)

我有一个包含方法$this->app()->getFileUrl('favicon.ico')的视图助手。哪个将首先搜索主题的位置,然后搜索公共位置。我将它分配给我的视图脚本顶部的变量并完成所有操作。

可以在此处找到视图助手和前端控制器插件的源代码: http://github.com/balupton/balphp/tree/master/trunk/lib/Bal/

或者直接代码: http://github.com/balupton/balphp/blob/master/trunk/lib/Bal/Controller/Plugin/App/Abstract.php#L721

答案 2 :(得分:0)

使用@ ArneRie的回答:

在views / helpers / Icon.php中我编写了以下类:

class Zend_View_Helper_Icon extends Zend_View_Helper_Abstract
{
    //$icon is the name of an icon without the ".png" at the end because all icons
    //are .png
    public function icon($icon)
    {
        $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();
        return sprintf('<img src="%s/images/icons/%s.png">', $baseUrl, $icon);
    }
}

在views / scripts / index / index.phtml的视图文件中,然后调用Icon对象的方法,如下所示:

<?php echo $this->icon('plus-circle');?>

答案 3 :(得分:0)

这是我的版本:

class My_View_Helper_Icon extends Zend_View_Helper_HtmlElement
{
    /**
     *
     * @param string $src Icon source
     * @param array $attribs HTML Atrtibutes and values
     * @param string $tag HTML tag name
     * @return string HTML
     */
    public function icon($src, $attribs = array(), $tag = 'img')
    {
        $attribs['src'] = $this->view->baseUrl($src);    
        $html = '<' . $tag . $this->_htmlAttribs($attribs) . $this->getClosingBracket();

        return $html;
    }
}