是否可以在单选按钮提交而不是单个值中传递键值对?
常规无线电领域:
<input type="radio" name="foo" value="bar" id="fooBar" required="true" checked>
但也许是这样的:
<input type="radio" name="['key1', 'key2', 'key3']" value="['value1, 'value2', 'value3']" id="fooBar" required="true" checked>
答案 0 :(得分:1)
不是这样。
value属性包含一个字符串。提交表单时,该字符串将被发送到服务器。
您可以使用序列化技术将更复杂的数据结构存储为字符串(例如:JSON),然后在服务器上对其进行解码。
<input type="radio" name="example" value='{ "key1": "value1", "key2": "value2", "key3": "value3" }'>
然后像:
sub process_form :Local {
my ($self, $catalyst) = @_;
my $radio_value = $catalyst->request->parameters->{example};
my $decoded_radio_value = decode_json $radio_value;
$c->log->debug("Value of key1 is " . $decoded_radio_value->{key1});
}
您还可以将所有数据存储在服务器上,然后在value属性中添加某种标识符(例如可以是哈希键或数据库行ID)。
<input type="radio" name="example" value='44'>
然后像:
sub process_form :Local {
my ($self, $catalyst) = @_;
my $radio_value = $catalyst->request->parameters->{example};
my $database_row = $catalyst->model("ExampleTable")->find($radio_value);
$c->log->debug("Value of key1 is " . $database_row->key1);
}