2011-08-25 218 views
1

我设法交互设置我的symfony应用程序的调试模式开启和关闭用户会话像这样的东西:的Symfony:显示在“督促”环境的开发工具栏

$configuration = ProjectConfiguration::getApplicationConfiguration($app, 
                  $env, $debugging); 

我知道网络调试工具栏显示与否不取决于$ debugging的值,而是当前环境的配置。

到目前为止,工具栏出现的唯一方法是当$ env ='dev'时。

我想在访问“prod”环境时激活它。

我有这样的应用程序设置:

prod: 
    .settings: 
    no_script_name:   true 
    logging_enabled:  false 
    web_debug:    true 
    error_reporting:  <?php echo (E_ALL | E_STRICT)."\n" ?> 

dev: 
    .settings: 
    error_reporting:  <?php echo (E_ALL | E_STRICT)."\n" ?> 
    web_debug:    true 
    cache:     false 
    no_script_name:   false 
    etag:     false 

工具栏不被显示,显然忽略了“web_debug”设置。

如果我回显(sfConfig :: get('sf_web_debug'))我得到“true”。

¿怎样才能让工具栏工作?

回答

1

从内存中,你必须改变你的前端php文件中的值。比较web目录中的frontend.php和frontend_dev.php文件。寻找一个是真的,另一个是假的差异(我认为这是最后一个参数)。

的线路有:

require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php'); 
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false)); 
sfContext::createInstance($configuration)->dispatch(); 

变化:

require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php'); 
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', true)); 
sfContext::createInstance($configuration)->dispatch(); 
+0

这是我在做什么,但是,而第三个参数的意思是“调试”,它的功能已经没有什么与调试工具栏被显示与否。第二个参数是一个指向一整套配置选项的标签。当它被设置为“prod”时,它指向的环境默认情况下不包含“web_debug:true”定义,而“dev”环境则包含该定义。该文档说,在“prod”环境中定义'web_debug:true'就足够了,但它不适用于我的应用程序。 –

+0

嗯,我确定你需要在配置中启用调试和调试栏的组合,并在frontend.php文件中启用调试。猜猜虽然... –

+0

根据文件的答案,但它似乎并没有工作。 –

2

你也需要改变factory.yml。默认情况下,'prod'环境中没有Logger。

注释掉这样的:

prod: 
# logger: 
# class: sfNoLogger 
# param: 
#  level: err 
#  loggers: ~ 
相关问题