2017-10-25 7 views
0

文字列の出力を "エスケープ"すると、検索行のjsは機能しません。 Zend Framework1(バージョン1.12.3)出力zf1を "エスケープ"する方法は?

<div id="search-box"> 
     <input type="text" placeholder="<?php echo $this->languageText('TEXT_SEARCH_OUR_SITE',"Search Our Site"); ?>" name="query" id="query" /> 
     <div class="search-box-bk"></div> 
    </div> 

私はこれを試してみましたが、それはうまくいきませんでした

placeholder="<?php echo $this->escape($this->languageText('TEXT_SEARCH_OUR_SITE',"Search Our Site")); 

答えて

1

悲しいZendの1は、デフォルトでは良いエスケープ機構を持っていません。 ->escape()は標準のPHPメソッドhtmlspecialcharsのみを使用します。

私がきた私のプロジェクトの一つでビューを取得し、方法 setEscape('htmlentities')setEscape(array('Class/Object','method)))を使用して、コントローラにどのような脱出方法を使用するように設定することができます


(コメント用応答)

Zend2エスケープを使いました。まず、私はEscerをLibraryのフォルダにコピーしました(私はそれをAdx_Escaperに改名して既存のライブラリに収まるようにしました - 私は怠け者です)。次の私はこのような内容でなViewHelper(resources.view.helperPath.Adx_View_Helper = "Adx/View/Helper/"(のapplication.ini))を作成しました:

class Adx_View_Helper_Escaper extends Zend_View_Helper_Abstract 
{ 
    protected $escaper = null; 

    public function Escaper() 
    { 
    if ($this->escaper === null) { 
     $this->escaper = new Adx_Escaper(); 
    } 
    return $this; 
    } 

    public function html($string) 
    { 
    return $this->escaper->escapeHtml($string); 
    } 
/* ... */ 

その後、私はちょうど今、私はそれだけでコンストラクタでエスケーを返すために、もっと簡単になります(参照$this->escaper()->html('SomeText')を使用していますが、作品ができましたeiter way)。

+0

ありがとうございます。私の仕事では、 ' - > escape()'はうまくいきませんでした。私はたくさんのことを考えていました。Zend Framework 2から 'Zend \ Escaper 'を使う考えが出ました。グーグル、私はこれについて考えている唯一の人ではなかったことを知りました:https://stackoverflow.com/questions/17534449/trying-to-use-zend-escaper-from-zf-2-1-in-zend-framework Zend \ EscaperをZF1に統合するとどう思いますか? –

+0

@AgentSmith私はZend2エスケープを使用しました。私のプロジェクトの1つにあります。 – Volvox

関連する問題