1

sf_paramsまたはsf_data、のようなグローバル変数を追加する可能性があるかどうかsf_usersf_contextまたはそれらのいずれかを拡張する可能性があるかどうかを尋ねたかったのですか?

ランタイム内 (パーシャル、テンプレート、およびアクション) でいくつかのアプリケーション パラメータを変更したいと考えています。現在、sf docs は のようなものを使用することを提案していますapp.ymlが、私の問題は、このパラメーターを設定する前に少しコードを実行する必要があることです。そのため、非常に動的に設定する必要がありますが、これは では不可能app.ymlです。

プロジェクトのほとんどどこからでもアクセスできる新しいグローバル var またはグローバル オブジェクトを symfony に実装する方法を提案した人はいますか?

4

2 に答える 2

2

構成データを保存する最適な場所はsfConfig、プロジェクトのどの部分でも使用できるオブジェクトです。そのため、設定データについてデータベースにクエリを実行し、 を介して sfConfig オブジェクトを設定する必要がありますsfConfig::set('variableName', $value)。そう:

  1. sfConfigデータベースにクエリを実行してオブジェクトにデータを入力する静的クラスを作成し、
  2. このクラスを呼び出して、任意の要求でジョブを実行するフィルターを追加します。
于 2012-07-19T13:34:52.523 に答える
2

@olivierw の解決策に同意します。

個人的なプロジェクトでは、という名前のテーブルがConfigあり、フィルターを使用してコンテンツを読み込むので、プロジェクトのどこからでもアクセスできます。

フィルターlib/filter/configFilter.php:

<?php

class configFilter extends sfFilter
{
  public function execute ($filterChain)
  {
    // get the config
    $configs = Doctrine_Core::getTable('Config')>findAll();

    foreach($configs as $config)
    {
      sfConfig::set('my_config_'.$config->getName(), $config->getContent());
    }

    // execute next filter
    $filterChain->execute();
  }
}

apps/frontend/config/filters.yml

rendering: ~

configFilter:
  class: configFilter

security:  ~

これで、次を使用して任意の情報にアクセスできます。

sfConfig::get('my_config_key');

schema.yml私のConfigテーブルの場合:

Config:
  columns:
    name:     { type: string(255) }
    content:  { type: string(1000) }
于 2012-07-19T13:54:06.127 に答える