Каковы лучшие практики для добавления значков в приложения Zend Framework? - PullRequest
0 голосов
/ 16 сентября 2010

Я хочу добавить значки в свое приложение.Я поместил значки в public_html / images / icons / и хочу сделать СУХОЙ способ их размещения в моих скриптах вида.Поэтому я бы не стал повторять ..

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

.. за каждую иконку.Я бы предпочел простой вызов объекта + функции.Что для этого лучше?

Я подозреваю Я должен использовать помощника по просмотру, но я пока не полностью понимаю его.

Ответы [ 4 ]

2 голосов
/ 16 сентября 2010

Я бы использовал 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');
0 голосов
/ 17 сентября 2010

Вот моя версия:

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;
    }
}
0 голосов
/ 16 сентября 2010

Используя ответ @ 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);
    }
}

В моем файле view в views / scripts / index / index.phtml я затем вызываю метод объекта Icon следующим образом:

<?php echo $this->icon('plus-circle');?>
0 голосов
/ 16 сентября 2010

У меня есть помощник вида, который имеет метод $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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...