Настроить view.yml для каждой среды - PullRequest
0 голосов
/ 24 августа 2011

Я хотел бы настроить view.yml для каждой среды.

В работе:

default:
  http_metas:
    content-type: text/json

В dev:

default:
  http_metas:
    content-type: text/html

Мне это нужно, потому что я хочу отладить ответ json с помощью веб-панели отладки.Итак, мне нужно установить тип содержимого ответа для каждой среды.Возможно ли сделать это yml?Если нет, в какое место можно зацепиться?

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Вы не можете сделать это в view.yml без переписывания всего обработчика конфигурации представления.Я предполагаю, что есть несколько альтернатив для этого конкретного примера:

  • Вы можете использовать ysfDimensionsPlugin, который позволяет вам указывать разные измерения с разными конфигурационными файлами.

  • Этого можно добиться, добавив или расширив фильтр в цепочке фильтров. Полагаю, я бы сделал это, расширив sfRenderingFilter.

Если, однако, вы просто хотите проверить JSONвывод, почему бы не использовать Firebug или Web Inspector?

0 голосов
/ 21 февраля 2012

Открыть файл 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;
  }
...