我想为每个环境配置view.yml。
在制作中:
default:
http_metas:
content-type: text/json
在开发中:
default:
http_metas:
content-type: text/html
我需要这个,因为我想用web调试工具栏来调试json响应。所以,我基本上需要设置每个环境的响应内容类型。有可能做到吗?如果没有,什么是正确的地方?
答案 0 :(得分:1)
如果不重写整个视图配置处理程序,则无法在view.yml中执行此操作。我想这个具体例子有几种选择:
您可以使用ysfDimensionsPlugin,它允许您使用不同的配置文件指定不同的维度。
你可以通过在过滤器链中添加或扩展过滤器来实现这一点,我想我会通过扩展sfRenderingFilter来实现这一点。
但是,如果您只想检查JSON输出,为什么不使用Firebug或Web Inspector?
答案 1 :(得分: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;
}