我想在我的应用程序中添加图标。我把图标放在public_html / images / icons /中,我希望用干的方式将它们放在我的视图脚本中。所以我最好不要重复..
<img src="<?php echo $this->baseUrl();?>/images/icons/plus-circle.png"</a>
..为每个图标。 我更喜欢简单的对象+函数调用。 这是什么最佳做法?
我怀疑我应该使用一个视图帮助器,但我还不完全理解它们。
谢谢!
答案 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;
}
}