禁用 Sonata admin bundle 生成的 console.log() 消息

Disable console.log() messages generated by Sonata admin bundle

我在我的 Symfony 项目中使用 Sonata Admin 包。我在 Sonata admin bundle 生成的浏览器中看到许多控制台日志消息。

这些消息是由 Sonata Admin 根据代码 /vendor/sonata-project/admin-bundle/src/Resources/public/Admin.js 生成的,

/**
 * render log message
 * @param mixed
 */
log: function() {
    var msg = '[Sonata.Admin] ' + Array.prototype.join.call(arguments,', ');
    if (window.console && window.console.log) {
        window.console.log(msg);
    } else if (window.opera && window.opera.postError) {
        window.opera.postError(msg);
    }
},

有谁知道如何禁用这些日志消息?我什至没有从 Google 搜索中得到任何类型的结果。有没有办法从配置文件或其他东西控制这些?

提前致谢!!

如果您根本不需要任何 Sonata 评论,我建议您评论该代码,您应该完成了。如果出现错误(例如,如果函数 "log()" 在代码中的任何地方被调用),您可以只注释这两行:

window.console.log(msg);
window.opera.postError(msg);

我在 Sonata Admin GitHub repo https://github.com/sonata-project/SonataAdminBundle/issues/5278 中打开了一个问题并找到了解决方案。

你必须覆盖奏鸣曲管理员的standard_layout喜欢,

/config/packages/sonata_admin.yaml

sonata_admin
    templates:
        layout: 'sonata_admin/layout.html.twig'

现在在 /templates/sonata_admin/ 中创建 layout.html.twig 并使用以下代码。

{% extends '@SonataAdmin/standard_layout.html.twig' %}

{% block javascripts %}
  {{ parent() }}
  <script>
    if ('undefined' !== typeof window.Admin) {
      window.Admin.log = function() {}
    }
  </script>
{% endblock %}