1

これを検索して検索しましたが、エンドユーザーのアプリケーション設定ではなく、zendサイトのアプリケーション設定が表示され続けるため、用語が正しくないと思います。

エンドユーザーが値を編集できるconfig.iniタイプのファイルが欲しいのですが、それは私が見たい設定だけであり、私が思うように値の名前を作成できるようにしたいと思います。それらへの感覚。だからそれは次のようなものになります

[General]
SiteName=MySite
ShowResources=TRUE

[Database]
Server=myServer
databasepath=mydbpath
...

だから私の2つの質問。1.アプリケーションsettinsgを検索すると、エンドユーザー用ではなくZFアプリケーション設定が表示されるため、このタイプのファイルは何と呼ばれますか(おそらく)

  1. このタイプのファイルを処理するための最良の方法は何ですか?

ありがとう

4

2 に答える 2

2
  1. これは、Zend_Config を介して読み書きできる INI ファイルです。
  2. ZF には「ユーザー設定」の概念がありません。ユーザーは、フレームワークではなく、ユーザーによって定義されます。

アプリは通常、ユーザー構成をデータベースに保存しますが、それは完全にあなた次第です。代わりに INI ファイルのディレクトリを保存できます。いずれにせよ、実装は自分で行う必要があります。

編集: 顧客に配布する ZF アプリがあり、顧客がそれを使用して 1 つのデータベースにしか接続しない場合、状況は大きく変わります。(最初は、複数のデータベースに同時に接続するアプリのインスタンスを 1 つ持つことを意味していると思いました。)

あなたの場合、アプリケーションの「内部」設定には標準の ZF application/configs/application.ini ファイルを使用します。次に、同じ application/configs ディレクトリに別の local.ini (または何でも) を用意します。このディレクトリには、顧客に編集してもらいたい設定のみが含まれています。アプリと一緒にスケルトンの local.ini ファイルを配布します。このファイルには、次のような指示が含まれています。

; Remove the comment from this line.
;configured = 1

; You need to put your database credentials in here.
db_host = "PUT YOUR DATABASE SERVER NAME HERE"
db_user = "PUT YOUR DATABASE USERNAME HERE"
db_pass = "PUT YOUR DATABASE PASSWORD HERE"

次に、Zend_Config を介して local.ini ファイルをロードします。また、インデックス コントローラーの init メソッドに、適切に構成されているかどうかを確認するチェックを追加します。

$localConfig = Zend_Registry::get('local_config'); // or wherever you put it
if (!$localConfig->configured) {
    $this->_helper->redirector('config', 'error');
}

そして、次のエラー/構成ビューを作成します。

You didn't read the instructions. Go do that now.

顧客が必要なものを編集するのを妨げるものは何もないことに注意してください。ただし、これにより論理的な分離が行われ、誤って何かを台無しにすることが難しくなります。

于 2012-06-13T20:29:25.823 に答える
2

ブートストラップに次を追加します。

protected function _initConfig()
{
    $config = new Zend_Config_Ini(APPLICATION_PATH.'/configs/config.ini');

    Zend_Registry::set('config', $config);

    return $config;
}

config.ini を任意のファイル名に置き換えます。

その後、アプリケーション リソースとして、またはレジストリ ( Zend_Registry::get('config')) を介して、アプリケーション内の任意の場所でこの構成オブジェクトにアクセスできます。したがって、例から SiteName を取得するには:

$config = Zend_Registry::get('config');
echo $config->General->SiteName;

データベース設定などについては、ブートストラップでこれらにアクセスして、他のリソースをセットアップするために使用できるようにする必要があります。application.ini にデータベース設定を含めようとしないことをお勧めします。代わりに、別のブートストラップ メソッドを追加して DB リソースを手動でセットアップします。

protected function _initDb()
{
    $this->bootstrap('config');
    $config = $this->getResource('config');

    $db = Zend_Db::factory('Pdo_Mysql', array(
        'host'     => $config->Database->Server,
        'username' => $config->Database->Username,
        'password' => $config->Database->Password,
        'dbname'   => $config->Database->Dbname
    ));

    return $db;
}

これをもう少し説明すると$this->bootstrap('config');、構成リソースが最初にロードされるようになります。$this->getResource('config');構成リソース (_initConfig() メソッドによって作成されたもの) を返します。次に、このオブジェクトのデータを使用して DB 接続を作成します。

于 2012-06-14T11:49:22.723 に答える