动态打开/关闭Yii调试工具栏

时间:2016-10-06 14:44:49

标签: debugging yii yii2 toolbar

是否可以动态打开/关闭Yii2调试工具栏,例如,如果请求网址包含“debug = 1”或“debug = 0”?

2 个答案:

答案 0 :(得分:3)

提供了调试工具栏 通过调试扩展为Yii 2 https://github.com/yiisoft/yii2-debug/blob/master/docs/guide/README.md

此工具栏的激活与app/web/index.php

中存在这些常量有关
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

事实上这些值是常量,这应该意味着不能改变运行时..

因此,工具栏的激活/停用只能离线。

或者至少它意味着在index.php文件中的应用程序文件的入口点中更改这些常量。你可以尝试动态地改变它来重写代码(这很危险。但它应该是可能的)

答案 1 :(得分:2)

除了scaisEdge回答之外,您还可以将其作为客户端技术。换句话说,使用。但是,您应注意该解决方案只是隐藏调试工具栏内容而不会阻止它们生成。

调试工具栏内容以div呈现,id属性值为yii-debug-toolbar。在主布局中,您可以执行以下操作:

<?php $this->endBody() ?><!- after this line -->
<?php if (Yii::$app->request->get('debug') == '0'):?>
<style>
  #yii-debug-toolbar{
    display: none !important;
  }
</style>
<?php endif; ?>
</body>

更新

为了保持一种从服务器端动态显示/隐藏调试工具栏的方法,不仅从我原来的答案中所考虑的客户端,你将不得不使用一个条目脚本web/index.php来播放名为allowedIPs的调试模块类的属性,当debug URL参数等于0时,我们将在其中设置不可能的IP号:

?php

// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');

require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

/* The solution */
$config = require(__DIR__ . '/../config/web.php');
if (isset($_GET['debug']) && $_GET['debug'] == '0'){
  $config['modules']['debug']['allowedIPs'] = ['1270.05.0.1'];
}


(new yii\web\Application($config))->run();