是否可以动态打开/关闭Yii2调试工具栏,例如,如果请求网址包含“debug = 1”或“debug = 0”?
答案 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回答之外,您还可以将其作为客户端技术。换句话说,使用css。但是,您应注意该解决方案只是隐藏调试工具栏内容而不会阻止它们生成。
调试工具栏内容以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();