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 回答