【问题标题】:HTML::FormHandler dynamically set default form valueHTML::FormHandler 动态设置默认表单值
【发布时间】:2013-01-20 01:04:18
【问题描述】:

我正在使用HTML::FormHandler,我希望能够为表单动态设置默认值。这是我希望能够做的一个很好的例子:

#this doesn't work
my $form = myapp::Form::Example->new(field1=>'default1',field2=>$default2);

在上面的示例中,field1 的值将保持“default1”,field2 的值将保持 $default2 的任何标量。然而,上面的例子并没有这样做。有谁知道这样做的方法?谢谢!

【问题讨论】:

    标签: perl forms default-value


    【解决方案1】:

    有很多方法可以设置默认值。您可以使用 init_object:

    my $form = MyApp::Form::Example->new;
    $form->process( init_object => { field1 => 'default1', field2 => 'default2' }, ... );
    

    您还可以使用“默认”快捷方式来动态更新字段:

    $form->process( defaults => { field1 => 'default1', field2 => 'default2' }, ... );
    

    “init_object”代替数据库行(项目),因此如果您还传递“项目”,您可能还必须设置“use_init_obj_over_item”标志。它使用对象/表单“值”格式,其中包括嵌套的 hashrefs 和 arrayrefs。 'defaults' hashref 需要一个扁平的 hashref,比如你从 'fif'(填写表单)方法中获得的。

    https://metacpan.org/module/HTML::FormHandler::Manual::Defaults

    【讨论】:

      【解决方案2】:

      从文档中,Q 中的代码很好。请尝试使用以下方法调试问题。这将允许您窥视对象的“内部”并查看发生了什么。

      我的猜测:默认值被实际数据覆盖或变量为空。

      use Data::Dumper;
      print Dumper($default2);
      my $form = myapp::Form::Example->new(field1=>'default1',field2=>$default2);
      print Dumper($form);
      

      【讨论】:

      • 文档的哪一部分说这个问题很好?我找不到任何可以验证我所做的事情。
      猜你喜欢
      • 2013-02-15
      • 2011-11-03
      • 2016-02-06
      • 2019-04-14
      • 2010-10-10
      • 1970-01-01
      相关资源
      最近更新 更多