0

環境ごとにview.ymlを設定したいと思います。

生産中:

default:
  http_metas:
    content-type: text/json

開発中:

default:
  http_metas:
    content-type: text/html

Webデバッグツールバーを使用してjson応答をデバッグしたいので、これが必要です。したがって、基本的には環境ごとに応答のコンテンツタイプを設定する必要があります。ymlすることは可能ですか?そうでない場合、フックするのに適切な場所はどこですか?

4

2 に答える 2

1

ビュー構成ハンドラー全体を書き直さずにview.ymlでそれを行うことはできません。この特定の例には、いくつかの選択肢があると思います。

  • ysfDimensionsPluginを使用すると、さまざまな構成ファイルでさまざまなディメンションを指定できます。

  • これは、フィルターチェーンにフィルターを追加または拡張することで実現できます。これは、sfRenderingFilterを拡張することで実現できると思います。

ただし、JSON出力を検査したいだけの場合は、FirebugまたはWeb Inspectorを使用してみませんか?

于 2011-08-24T11:24:03.910 に答える
0

ファイルを開くlib/symfony/config/sfViewConfigHandler.class.php

「mergeConfig」関数を以下に置き換えれば、問題は解決します:)

  protected function mergeConfig($myConfig)
  {
    // merge javascripts and stylesheets
    $myConfig['all']['stylesheets'] = array_merge(isset($myConfig['default']['stylesheets']) && is_array($myConfig['default']['stylesheets']) ? $myConfig['default']['stylesheets'] : array(), isset($myConfig['all']['stylesheets']) && is_array($myConfig['all']['stylesheets']) ? $myConfig['all']['stylesheets'] : array());
    unset($myConfig['default']['stylesheets']);

    $myConfig['all']['javascripts'] = array_merge(isset($myConfig['default']['javascripts']) && is_array($myConfig['default']['javascripts']) ? $myConfig['default']['javascripts'] : array(), isset($myConfig['all']['javascripts']) && is_array($myConfig['all']['javascripts']) ? $myConfig['all']['javascripts'] : array());
    unset($myConfig['default']['javascripts']);

    // merge default and all
    $myConfig['all'] = sfToolkit::arrayDeepMerge(
      isset($myConfig['default']) && is_array($myConfig['default']) ? $myConfig['default'] : array(),
      isset($myConfig['all']) && is_array($myConfig['all']) ? $myConfig['all'] : array(),
      isset($myConfig[sfConfig::get('sf_environment')]) && is_array($myConfig[sfConfig::get('sf_environment')]) ? $myConfig[sfConfig::get('sf_environment')] : array()
    );
    unset($myConfig['default']);
    $this->yamlConfig = $myConfig;
  }
于 2012-02-21T15:49:16.437 に答える