currently I am implementing a template module where a html form is embed.
$lt;form name="input" action="<mt:xyz>" >
Username:
<input type="text" name="user" />
<<nput type="submit" value="Submit" />
</form>
Users will type his name in the text box and plugin get info for each user.
My questions are:
1) is it correct to put the plugin name on the action(my intention is to trigger the plugin xyz when click the submit button)?
2) how does the plugin get what users type in the text box(name:user)?
Reported on Movable Type 4.3
You may like to post again your coding, after making sure that you strip the angle brackets by replacing < with < and > with >
my template:
<form method="post" enctype="multipart/form-data" action="<mt:var name="script_url">"><input type="hidden" name="__mode" value="addsamplecode" />
<mt:if name="blog_id">
<input type="hidden" name="blog_id" value="<mt:var name="blog_id">" />
</mt:if>
<mtapp:setting
id="samplecode"
label=""
show_label="1"
content_class="field-content-text">
add package name:
<input type="text" id="packageName" name="packageName" size="60" />
</mtapp:setting>
<mt:setvarblock name="action_buttons">
<button
type="submit"
accesskey="s"
title="Submit"
class="primary-button">
Submit
</button>
</mt:setvarblock>
<mt:include name="include/actions_bar.tmpl" bar_position="bottom"
hide_pager="1" settings_bar="1">
</form>
my config.yaml (path: /plugins/HelloWorld/config.yaml)
name: Good for Nothing plugin
id: Good4Nothing
author_link: http://amazon.com/
author_name: Daniel Wang
description: xyz
version: 1.0
applications:
samplecode:
methods:
addsamplecode: $Good4Nothing::Good4Nothing::Plugin::tag
My plugin code:
package Good4Nothing::Plugin;
sub tag {
my $app = shift;
my $query = $app->{query};
my $packageName = $query->param('packageName');
return $app->build_page($packageName);
}
I want to transfer the package name users entered to my plugin when users click the submit button.
how to do it?
It's not necessary to reference it in the form. Just pass in the hidden parameter for the mode that the plugin exposes like you're doing above.
The mode exposed by the plugin gets passed an instance of a MT::App subclass ($app) and that instance has received all of the HTTP headers, form data, etc. from the Perl base CGI code.