0

Zend_View を Zend_Registry に入れたいのですが、その簡単な作業に問題があります。Zend_View は、application.ini でリソースとして初期化されます。

resources.view.encoding = "UTF-8"
resources.view.contentType = "text/html; charset=UTF-8"
resources.view.doctype = "HTML4_STRICT"
resources.view.helperPath.ZendX_JQuery_View_Helper = "ZendX/JQuery/View/Helper"

Bootstrap.php にメソッドを追加して、これをレジストリに入れたかったのです。

protected function _initView()
{
    $view = $this->getResource('view');
    Zend_Registry::set('view', $view);

    return $view;
}

更新後、ビューの初期化でエラーが発生します。

Catchable fatal error: Argument 1 passed to ZendX_JQuery::enableView() must be an instance of Zend_View_Interface, null given, called in D:\projekty\xxx\library\ZendX\Application\Resource\Jquery.php on line 91 and defined in D:\projekty\xxx\library\ZendX\JQuery.php on line 104

私は何を間違っていますか?前にそのjQueryエラーが発生しません

4

2 に答える 2

0

_init メソッドを別の方法で呼び出します...ここで名前が衝突する可能性があります。

protected function _initViewInRegistry() {
    // run view resource
    $this->bootstrap('view');

    // put view resource in registry
    Zend_Registry::set('view', $this->getResource('view'));
}

これはネーミング/セマンティクスが少し醜いため、レジストリ インスタンスを完全にセットアップするレジストリ リソースに適している可能性があります。

于 2011-05-10T18:45:16.233 に答える
0

リソースを初期化する方法は 2 つあります。application.ini ファイルで行う方法と、ブートストラップ クラスで _init メソッドを使用する方法です。アプリケーションがブートストラップされると、_init メソッドが最初に実行され、次に ini ファイル リソースが実行されます。したがって、コードの問題は、$this->getResource('view')実行時にビュー リソースがまだ存在しないため、null が返されることです。次に、その null をレジストリに入れています。これが後でエラーの原因になると考えられます。

レジストリにビュー オブジェクトが必要な理由がはっきりしないので、説明していただければ、より良い方法を提案できるかもしれません。

于 2011-05-10T16:50:12.697 に答える