2012-03-12 12 views
1

config.xmlというカスタムXML設定ファイルを作成し、それをZend Frameworkのconfigsディレクトリに配置しました。私はZend_Config_Xmlを使用して私のコントローラの1つでそれを使いたいと思います。私が持っているものはうまくいかず、「エラーが発生しました。アプリケーションエラー」と表示されます。コントローラからカスタムXML設定ファイルを読み込むにはどうすればよいですか?これは私がこれまでに私のコントローラに持っているものです:あなたは修正する必要がZend Framework - カスタム設定ファイルへのアクセス

class IndexController extends Zend_Controller_Action 
{ 
    public function init() 
    { 
     /* Initialize action controller here */ 
    } 

    public function indexAction() 
    { 
     // action body 
     $config = new Zend_Config_Xml('config.xml', 'staging'); 
     echo $config->host; 
    } 
} 
+0

おそらく問題のxmlファイルを提供できますか。また、ファイルが読み込み中であることを確認するために 'var_dump($ config)'を実行してみましたか?このシナリオは非常に可能です。 – danielrsmith

+0

パスなしでファイル名を指定していますが、本当にファイル名が見つかるのでしょうか? –

答えて

3

はおそらくパス:

$config = new Zend_Config_Xml(APPLICATION_PATH.'/configs/config.xml', 'staging'); 

をされていない場合、実際のエラーメッセージが何であるかを確認するためにエラー・ログをチェックしてください。

編集:ブートストラップでこれを行うには、新しいリソースメソッドを追加して、設定オブジェクトをレジストリに格納するのが最も簡単な方法です。あなたのブートストラップクラスにこれを追加します。

protected function _initCustomConfig() 
{ 
    $config = new Zend_Config_Xml('config.xml', 'staging'); 
    Zend_Registry::set('config', $config); 

    return $config; 
} 

あなたが使用して、後でそれにアクセスすることができます。

$config = Zend_Registry::get('config'); 
+1

代わりにブートストラップでこれを行う方法を私の答えに編集しました。 –

+0

ありがとうTim。好奇心が強いのですが、Bootstrapクラスはすべてのリクエストでインスタンス化され、_initで始まるすべてのメソッドを起動しますか?また、Zend_Registryがすべてのリクエストでリセットされるのか、それとも何らかの永続的な保存場所に保存されるのかどうか知っていますか?ドキュメントには、アプリケーション全体で常に利用可能であることが記載されています。私はこれが静的なエントリを持つ単なるグローバルクラスであると思います。 – skaterdav85

+0

はい、ブートストラップとそのinitメソッドはすべての要求に対して実行されます。 Zend_Registryはリクエスト間で永続的ではありませんが、疑わしい静的エントリを持つグローバルクラスです。 –

1

ローカルで問題をデバッグしている場合は、最初のアプリケーションにこれらのコマンドを追加することにより、より優れたエラー報告を有効にします.iniの開発セクション:

phpSettings.error_reporting   = E_ALL 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors   = 1 

デフォルトでは、zendフレームワークは内部エラーを表示しません。

Zend_Configファイルをロードする場合は、絶対パスを使用してロードする方が良いでしょう。

public function indexAction() 
    { 
     // action body 
     $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/config.xml', 'staging'); 
     echo $config->host; 
    } 
関連する問題