0

ここで、誰かが を拡張することを提案しているのを見てZend\View\Helper\Escaper\AbstractHelper;、結果は次のようになります。

namespace Photo\View\Helper;

use Zend\View\Helper\Escaper\AbstractHelper;

class Imghelper extends AbstractHelper
{
protected $_baseUrl = null;
protected $_exists = array();

public function __construct ()
{
    $url = PUBLIC_PATH;
    $root = '/' . trim($url, '/');

    if ($root == "/")
      {$root = "";}

    $this->_baseUrl = $root . "/";
}

public function escape($value)
{
   return $this->getEscaper()->escapeHtml($value);
}

public function __invoke($path, $params = array())
{
           $plist = array();
    $str = null;

    $imgpath = $this->_baseUrl . ltrim($path);

    if (!isset($this->_exists[$path]))
      {$this->_exists[$path] = file_exists(realpath($imgpath));}

    if (!isset($params['alt']))
      {$params['alt'] = '';}

    foreach ($params as $param => $value)
      {$plist[] = $param . '="' . $this->escape($value) . '"';}

            $str = " ".join(" ", $plist);
    $p = ($this->_exists[$path]) ? $this->_baseUrl.ltrim($path,'/') : null;

    if (isset($p))
      {return '<img src="'.$p.'" '.$str.' />';}
}


} 

ただし、コードで試してみると、エラーが発生します

Strict Standards: Declaration of Application\View\Helper\Imghelper::__invoke() should be compatible with Zend\View\Helper\Escaper\AbstractHelper::__invoke($value, $recurse = 0) in ...

エラーメッセージをエラーにしてもよろしいですか?または、これを行うためのより良い方法はありますか? ありがとう!

4

1 に答える 1

2

エスケープ ヘルパーを作成していないため、Abstract Escape ヘルパーを拡張することはお勧めしません。元の計画に固執し、延長するだけZend\View\Helper\AbstractHelperです。その後、エスケープ ヘルパーにアクセスできます。$this->view->escapeHtml()など$this->view->escapeJs()

于 2013-10-30T15:44:33.690 に答える