コンストラクター注入でいくつかのプロパティを設定したいのですが、使用時に新しいインスタンスをロードするため、MyFilter
不可能のようです。実装します。Zend_View::addFilter(string $filter_class_name)
MyFilter
Zend_Filter_Interface
フィルタのインスタンスを のインスタンスに挿入できますZend_View
か?
(できれば) 2.0 にプッシュされるため、終了します。JIRA のチケットを参照してください。
コンストラクター注入でいくつかのプロパティを設定したいのですが、使用時に新しいインスタンスをロードするため、MyFilter
不可能のようです。実装します。Zend_View::addFilter(string $filter_class_name)
MyFilter
Zend_Filter_Interface
フィルタのインスタンスを のインスタンスに挿入できますZend_View
か?
(できれば) 2.0 にプッシュされるため、終了します。JIRA のチケットを参照してください。
フィルタプロパティをビューに割り当ててから、ビューの設定時にプロパティを設定するか、フィルタリング関数でビューに直接アクセスしてみませんか?例えば
$view->assign('MyFilterProperty', 'fubar');
次に、フィルタークラスで:
public function setView($aView)
{
$this->_property = $aView->MyFilterPropery;
}
それは厄介ですが、それは仕事を成し遂げるはずです。
確かではありませんが、ありえないと思います。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
1.x ブランチではできません。チケットが提出されています。
Zend_View
メソッドをオーバーライドしaddFilter()
てクラスまたはインスタンスのいずれかを受け入れるように拡張するカスタム ビュー オブジェクトを作成できませんか。次に、_filter()
メソッドをオーバーライドして、格納した両方のタイプのフィルター (文字列とインスタンス) を処理します。
オブジェクトを渡すことができます:
$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;
}
}