【问题标题】:Viewing the variable content in a clean way以干净的方式查看变量内容
【发布时间】:2012-11-01 18:38:34
【问题描述】:

所以我用来查看变量内容的方式是在我的模板工具包中使用 Data::Dumper:

[% 使用自卸车 %] [% Dumper.dump(varname) %]

但我得到的结果有点乱——所有关于表关系、列类型和属性等的信息。

我想知道是否有办法获得“干净”的变量内容 - 仅在查询的当前结果+相关结果集(即,当我将 php 与 cakephp 框架一起使用时,有一个 'debug(varname )' 命令提供了这样的结果,看起来像这样http://pastebin.com/Hut0LnAb)。

【问题讨论】:

  • 您是否将输出插入 HTML 而不将其转换为 HTML? TT没有过滤器可以转义为HTML吗?然后将其包装在 PRE 标签中。请记住,TT 和 Data::Dumper 都与 HTML 无关。
  • 您所说的是格式化,但不幸的是,这不是我所要求的。比方说,我需要获取变量的过滤内容 - 没有所有列类型数据和所有其他内容 - 只有查询内容(如我的 php 示例中)
  • 请显示您获得的输出的屏幕截图。我不完全理解这个问题。
  • 据我了解,它与转储 ORM 对象(如 DBIC 对象)有关。

标签: perl catalyst template-toolkit


【解决方案1】:

Data::Printer 来救援! 它的对象转储更易于阅读:

my $obj = SomeClass->new;
p($obj);
# produces:
\ SomeClass  {
    Parents       Moose::Object
    Linear @ISA   SomeClass, Moose::Object
    public methods (3) : bar, foo, meta
    private methods (0)
    internals: {
       _something => 42,
    }
}

与模板工具包兼容:

[% USE DataPrinter %]
html-formatted, colored dump of the same data structure:
[% DataPrinter.dump_html( myvar ) %]

它也“知道”如何处理 DBIx::Class:

use Data::Printer
    filters => {
        -external => [qw[DB]], # use DB filter
    }, class => {
        expand => 2, # traverse object 2-levels deep
        linear_isa => 0, # hide not-so-relevant information
    };

...

my $obj = $schema
    ->resultset('AddressState')
    ->search({}, { prefetch => [qw[country]] })
    ->single;
p $obj;

【讨论】:

  • 哇,这正是我想要的,它甚至还支持模板工具包。我已阅读 Data::Printer 配置部分,但找不到问题的答案 - 是否有可能在对象转储中获得相关的结果集? (即“消息”有许多“cmets”,所以当我转储对象“消息”时,它也会显示相关的 cmets)
  • 你可以增加对象遍历的深度:use Data::Printer max_depth => 5
  • 也许你应该启用join的预取?
  • 对不起@kK-Storm,我的错!这是您导入 Data::Printer 的方式,它以您期望的方式遍历 ResultSet:use Data::Printer filters => { -external => [qw[DB]]}, class => { linear_isa => 0, expand => 2 };(仍然需要预取!)
  • @kK-Storm 回答已编辑 :) 但是,我不知道如何让 Data::Printer 停止显示特定的内部结构......
【解决方案2】:

你可以使用

 [% Dumper.dump_html(variable) %]

见: http://template-toolkit.org/docs/modules/Template/Plugin/Dumper.html

【讨论】:

    猜你喜欢
    • 2018-06-10
    • 2018-02-08
    • 2023-04-02
    • 2011-09-08
    • 2012-12-14
    • 2016-07-05
    • 2021-06-06
    • 2018-01-25
    • 2017-01-08
    相关资源
    最近更新 更多