0

コンストラクター注入でいくつかのプロパティを設定したいのですが、使用時に新しいインスタンスをロードするため、MyFilter不可能のようです。実装します。Zend_View::addFilter(string $filter_class_name)MyFilterZend_Filter_Interface

フィルタのインスタンスを のインスタンスに挿入できますZend_Viewか?

(できれば) 2.0 にプッシュされるため、終了します。JIRA のチケットを参照してください。

4

5 に答える 5

0

フィルタプロパティをビューに割り当ててから、ビューの設定時にプロパティを設定するか、フィルタリング関数でビューに直接アクセスしてみませんか?例えば

$view->assign('MyFilterProperty', 'fubar');

次に、フィルタークラスで:

public function setView($aView)
{
    $this->_property = $aView->MyFilterPropery;
}

それは厄介ですが、それは仕事を成し遂げるはずです。

于 2010-10-29T21:50:48.587 に答える
0

確かではありませんが、ありえないと思います。setFilter()ソースコードを見てaddFilter()、フィルター クラス名のみを文字列として受け入れます。Zend_Formたとえば、オプションを設定することはできません。ただし、できることは次のとおりです。

class MyFilter implements Zend_Filter_Interface 
{
     protected static $_config;
     public static setConfig(array $options)
     {
         self::_config = $options;
     }
     // ... do something with the options
}

次に、必要に応じて でオプションを設定します。これにより、 Filter インスタンスをインスタンス化するMyFilter::setOptions()ときに、フィルタを適切に実行するために必要なものが取得されます。Zend_View

于 2010-04-20T07:30:04.987 に答える
0

1.x ブランチではできません。チケットが提出されています。

http://framework.zend.com/issues/browse/ZF-9718

于 2010-10-06T15:14:27.007 に答える
0

Zend_ViewメソッドをオーバーライドしaddFilter()てクラスまたはインスタンスのいずれかを受け入れるように拡張するカスタム ビュー オブジェクトを作成できませんか。次に、_filter()メソッドをオーバーライドして、格納した両方のタイプのフィルター (文字列とインスタンス) を処理します。

于 2010-10-06T18:02:11.303 に答える
0

オブジェクトを渡すことができます:

$filter = new Your_Filter($params); // implements Zend_Filter_Interface
$view->addFilter($filter);

たとえば staticHelper を使用して、viewRenderer からビュー インスタンスを取得できます。

編集:

他の方法は次のとおりです。

class MyFilterSetup extends MyFilter implements Zend_Filter_Interface 
{
     public function __construct($params)
     {
           $this->_params = $params;
           parent::__construct();
     }

     public function filter($string)
     {
         // .... $this->_params;
     }
}
于 2010-04-19T15:32:04.563 に答える