【发布时间】:2018-03-13 17:50:55
【问题描述】:
新手提醒, 我真的很喜欢 perl Catalyst,但是,我用谷歌搜索并找不到 Country - City 动态选择的解决方案。当我从下拉列表中选择一个国家/地区时,我希望这些城市仅更改为该国家/地区的城市。我如何在 Perl、Catalyst 中使用 HTML::FormHandler 实现这一点。
PS 数据来自具有一对多关系的mysql db
has_field 'city_id' => (
label => 'City',
type => 'Select',
empty_select => 'Choose city',
required => 1,
required_message => 'Please enter city.',
);
has_field 'country_code' => (
label => 'Country',
type => 'Select',
empty_select => 'Choose country',
required => 1,
required_message => 'Please enter your country.',
);
has_field 'submit' => (
type => 'Submit',
value => 'Save',
element_class => ['btn']
);
sub options_country_code {
my $self = shift;
return unless $self->schema;
my @countries = $self->schema->resultset('Country')->all;
my @options = map { { value => $_->country_code, label => $_->country_name } } @countries;
unshift @options, { value => 0, label => 'Choose Country' };
return @options;
}
__PACKAGE__->meta->make_immutable;
1;
【问题讨论】:
-
这不是 perl 问题。用户在他的浏览器中选择国家。选择国家后,您必须在客户端使用 javascript 来限制城市。
-
@dgw 问题是使用 HTML::FormHandler 时如何做到这一点
-
这取决于有多少数据。你有两个选择。您可以在大型数据结构中创建所有数据并将其作为 json 或类似格式包含在页面中,或者在您的应用程序中创建一个端点来处理 AJAX 调用。对于它们中的任何一个,您都不需要 FormHandler。
-
我完全同意 cmets,有人可以分享一些关于如何实现这一点的代码吗?我还没有找到关于此事的示例代码,因此发布了这篇文章。
标签: perl catalyst html-formhandler