【问题标题】:How can I disable yii-debug-toolbar on a specific view?如何在特定视图上禁用 yii-debug-toolbar?
【发布时间】:2014-06-26 22:30:26
【问题描述】:

如何在特定视图上禁用yii-debug-toolbar,尤其是在部分渲染视图上?

这可能吗?

附言很遗憾,Yii-debug-toolbar 不作为下面的标签存在。

【问题讨论】:

  • 考虑到赞成票和反对票,您是否会考虑更新您接受的答案?
  • 谢谢!我希望你发现我的回答对你自己的 Yii 编码很有用。
  • 我已经放弃 PHP 改用 NodeJS ;)
  • 祝你好运。但是,如果我可以提供建议 - 永远不要“放弃”一种语言,它们都有自己的位置!

标签: php debugging yii yii-extensions


【解决方案1】:

如果不想显示日志,可以使用 jQuery 隐藏 yii-debug 控制台

   $('#ydtb-toolbar').hide();

在你的观点上调用这个 sn-p。

【讨论】:

    【解决方案2】:

    只需从/config/web.php 中删除或删除这两行

    $config['bootstrap'][] = 'debug';
    $config['modules']['debug'] = 'yii\debug\Module';
    

    【讨论】:

    • 这不能回答问题。 OP 想知道如何仅在特定视图中禁用调试工具栏,同时在其他视图中保持启用状态。按照这个答案完全禁用它。
    【解决方案3】:

    把它放在你的布局或视图文件中:

    if (class_exists('yii\debug\Module')) {
        $this->off(\yii\web\View::EVENT_END_BODY, [\yii\debug\Module::getInstance(), 'renderToolbar']);
    }
    

    这会从在布局结束时运行的事件中删除呈现工具栏的回调,其中您有$this->endBody()

    【讨论】:

    • 天哪,完全奏效了!这一点都不明显!您必须查看源才能找到它!
    • 我刚刚更新了这个来检查你是否处于调试模式,因为在实时模式下你可能没有安装 yii-debug 模块,如果没有这个捕获它会抛出错误。
    • 我想这是调试打开时使用的条件,但我们只想禁用特定视图或整个布局的工具栏。
    • @shasikanth 我是说,在您的视图或布局中添加它,然后它将禁用它。如果调试模块甚至不存在,即在生产中,则测试不会尝试删除事件处理程序。我刚刚进行了另一次编辑以改进测试。
    • 这在控制器代码中不起作用,并且仅在视图/布局中起作用。对于控制器的使用:Yii::$app->getView()->off(\yii\web\View::EVENT_END_BODY, [\yii\debug\Module::getInstance(), 'renderToolbar']);
    【解决方案4】:
    public function beforeAction($action) {
    
        if ( $action->controller->id=='elfinder' && Yii::$app->getModule('debug') )
            Yii::$app->getModule('debug')->instance->allowedIPs = [];
        return parent::beforeAction($action);
    }
    

    【讨论】:

      【解决方案5】:

      如果你想从前端移除,那么方法是:

      1. 转到前端/config/main-local.php
      2. 注释掉这两行:

      ma​​in-local.php

        $config['bootstrap'][] = 'debug';    
        $config['modules']['debug'] = 'yii\debug\Module';
      

      这将从前端删除调试栏。

      【讨论】:

        【解决方案6】:

        我找到了更好的方法。把它放在任何地方:

        Yii::$app->log->targets['debug'] = null;
        

        这不会在 /runtime/debug 中生成文件

        【讨论】:

        • 这导致我的页面出现一些 php 错误。
        【解决方案7】:

        config/web.php 中删除它

        $config['bootstrap'][] = 'debug';
        $config['modules']['debug'] = 'yii\debug\Module';
        

        【讨论】:

          【解决方案8】:
          $config['bootstrap'][] = 'debug';
          $config['modules']['debug'] = 'yii\debug\Module';
          

          注释掉上面的代码行。这对我有用。这在前端和后端执行以禁用网站页脚处的调试工具或模块。

          【讨论】:

          • 这将启用调试模块。
          • 我的意思是说对不起。
          • 已经有三个完全相同的答案。无需多次发布相同的解决方案。
          • 我不被允许支持该状态,这就是为什么我必须声明它有效并解释它对我有效。
          【解决方案9】:

          打开文件Your-Project-Name\vendor\yiisoft\yii2-debug\src\assets\js\toolbar.js

          将行 toolbarEl.style.display = 'block'; 更改为 toolbarEl.style.display = 'none';

          【讨论】:

          • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
          猜你喜欢
          • 2011-07-04
          • 2022-06-28
          • 2013-01-15
          • 2021-11-23
          • 1970-01-01
          • 2015-03-22
          • 2014-12-24
          • 2021-07-15
          • 2022-08-13
          相关资源
          最近更新 更多