1
2
3
4
5
6
<%= form_token name=foo,method=post,url=/bar/baz.pl,token=(TOKEN,TAKEME) begin %>
<!-- und hier das "normale" HTML -->
<input name="username" type="text" value="<%= username %>">
<input name="userpassword" type="password" value="<%= password %>">
<input type="submit">
<% end %>
1 2 3 4 5 6 7 8
<form name="foo" method="post" action="/bar/baz.pl"> <input name="username" type="text" value="MeOMy"> <input name="userpassword" type="password"> <input type="submit"> <input type="hidden" name="TAKEME" value="1234567"> <input type="hidden" name="TOKEN" value="fd9d8aa21e71f7626d6cc35"> </form>
2013-09-07T11:07:49 GwenDragonIch blick leider doch nicht so durch deine API durch.
Wenn du bitte Zeit hast, mir folgendes zu klären.
1) Welchen Sinn hat sub { exists $_[1]->{NAME} } in der Definition der tagnames.
Quote2) Wie kann ich es anstellen, dass in <% form %> beliebig viel/keine Attribute stehen können?
2013-09-07T12:45:04 pqAh ja, praktisch.eine subroutine, die die syntax des tags checkt.
2013-09-07T12:45:04 pqAch so. Ich wollte mal wieder viel zu viel Zauberei.du musst jedes attribut registrieren, das vorkommen könnte.
als template-autor einen beliebigen attributnamen ausdenken, der nicht registriert ist, das geht nicht.
1
2
3
4
test
<%form name="test" method=post url=/bar.pl token="xsfrtoken" %>
Formular
<%/form %>
1 2 3 4 5 6 7 8 9 10 11 12
use 5.010; use HTML::Template::Compiled; use HTCForm; my $form = HTCForm->new; my $sec_token = 'xyz0xgdtz256hdfrashwe5625xh'; my $htc = HTML::Template::Compiled->new( filename => "form.html", plugin => [$form], debug => 1, ); $htc->param( xsfrtoken => $sec_token ); say $htc->output;
1
2
3
4
5
test
<form name="test" method="post" action="/bar.pl">
Formular
<input type="hidden" name="TOKEN" value="xyz0xgdtz256hdfrashwe5625xh">
</form>
1 2 3 4 5 6 7
elsif ($def =~/^\w+$/) { $expression .= <<"EOM"; $OUT '<input type="hidden" name="$def" value="' . \$t->_get_var_global_sub(\$P,\$\$C,0,[undef,'$def']) . '">'; EOM }
token="z.xsfrtoken" %>
2013-09-07T15:11:44 GwenDragonAch so. Ich wollte mal wieder viel zu viel Zauberei.
QuoteDann werde ich in der DTD von HTML4 nachsehen müssen und die Attribute einbinden.
QuoteWie ist das eigentlich, wie komme ich aus einem Plugin an den Stash des HTC-Objekts? Es geht mir darum nämlich Werte einer Variablen einzusetzen.
1 2 3 4 5 6 7 8 9
my $token = $attr->{TOKEN}; # z.b. "csrftoken" oder ".config.token" my $token_expr = $htc->get_compiler->parse_var($htc, var => $token, # die 3 zeilen sind leider noch notwendig, evtl. kann # ich die mal woanders hin schieben method_call => $htc->method_call, deref => $htc->deref, formatter_path => $htc->formatter_path, );
1 2 3 4
$expression .= <<"EOM"; $OUT '<input type="hidden" name="TOKEN" value="' . $token_expr . '"> '; EOM
2013-09-07T16:10:08 pqQuoteDann werde ich in der DTD von HTML4 nachsehen müssen und die Attribute einbinden.
wie meinst du das?