2016-05-12 2 views
1

からの取得データは、私はPerlの初心者だと知っていただきたいと思います:Perlのダンサー:フォーム

私はPerlのダンサーとHTMLフォームからのデータを使用するにはどうすればよい

私は、次の例に苦しんでいます。私は、フォームからユーザー名を使用して入力した情報を返すページを構築したいと思います

<form action="/hello/:username" method="get" name=""> 
     <h3>Please log in </h3> 
      <input type="text" name="username" required=""/> 
      <input type="password" name="senha" required=""/>    
      <button name="Submit" value="Login" type="Submit">Login</button>    
    </form>  

:私はこのような私のindex.ttファイルの形式を持っています。だから私はthisチュートリアルをチェックしましたし、私は私のProyecto.pmに次のように行ってきた:

package Proyecto; 
use Dancer ':syntax'; 
our $VERSION = '0.1';  


get '/' => sub { 
template 'index'; 
}; 

get '/hello/:username' => sub { 
my $username= params('username'); 
return "Hola $username"; 
}; 

しかし、それは動作しません。あなたはここに何が欠けているか知っていますか?ありがとう!

答えて

3
<form action="/hello/:username" method="get" name=""> 

は、正確には/hello/:usernameとなり、置き換えられません。関係なく、バックエンドは、ダンサーや何か他のものを使用している場合 - HTMLは、魔法のようにソースコードの部品を交換することができません。 (JavaScriptがそれを行うことができます。)/hello/chungel/hello/Larryまたは/hello/:usernameなどの

get '/hello/:username' => sub { 

マッチ任意の文字列が続い/hello/へのすべてのコールを、。最後のものはparam('username')に値usernameを設定します。

また、1つのキー(URLから1、フォームからの1)のための2つの値で終わるname="username"とフォームフィールドを追加しました。

最後に:HTMLフォーム値(およびHTTP引数)として、ユーザー名を渡す

<form action="/hello" method="get" name=""> 

get '/hello' => sub { 

をここに任意の利点を得ることはありません:フォームアクションとして固定されたURLを使用してください。

あなたが本当に最初、URL内のユーザ名を持つルートの定義に別の名前を使用する場合:

get '/hello/:url_username' => sub { 
    return param('url_username'); 

次JavaScriptを使用して、フォームのアクションを書き直したり使用して、ターゲットURLを書き換えるためにどちらかの必要がありますa Dancer before hook

+1

私の編集概要は申し訳ありませんが、あなたは正しい – simbabque

+0

「それはそのバージョンについては、具体的でない限り、特定のバージョンにCPANのリンクを使用しないでください」になるはずでした。これを 'perldoc? 'の代わりにコピーしました。あなたがmetacpanするsearch.cpan.orgを好む場合 – Sebastian

+1

は、あなたが与え右上にパーマリンクボタンを使用することができます 'のhttp:?Dancer' – ThisSuitIsBlackNot