2

私はCGI Perlの初心者で、「モード」変数と「アクション」変数を使用してロードするページを決定するWebアプリに取り組んでいます。

$mode   = param('mode');
$action = param('action');

  if ($mode eq 'page1') {

      if ($action 'eq') {

          &performAction;
      }
      displayPage1;
  }
  elsif ($mode eq 'page2') {

      &displayPage2
  }

開発中、フォームの送信後にさまざまなモード/アクションに移動しようとするときに、これらの変数を設定する最良の方法を見つけるのに苦労しました。

場合によっては、フォームに非表示の値を入れると機能します

hidden(-name=>'action',-value=>'save')

しかし、そうでない場合もあります。後者の場合、フォームの前に param('action',"save") を置くと、フォームが送信されたときにアクションが変更されます。 なぜこれが起こるのか理解できませんが、私が気付いていないこれら 2 つの変数に影響を与える要因はありますか?

私が今する必要があるのは、同じフォームに 2 つのボタンを配置することです。1 つはフォーム データを保存するアクションを設定するだけで、もう 1 つはフォーム データを保存しますが、そのフォーム データを使用して別のモード/ページに移動します。

誰かが少なくとも私が研究すべきことについて正しい方向に私を向けることができれば、私は大いに感謝します.

4

2 に答える 2

0

これは試してみましたが、うまくいくかどうかはわかりません。

ボタンの前に隠れた変数を設定し、すべてのボタンの前に変更してみてください。新しい値を取得する必要があります。

例:

<input type='hidden' name='op' value='save'/>
<input type='submit' name='Save Form' value='SaveForm'/>
<input type='hidden' name='op' value='submit'/>
<input type='submit' name='Submit Form' value='SubmitForm'/>
<input type='hidden' name='op' value='cancel'/>
<input type='submit' name='Cancel Form' value='CancelForm'/>

perlスクリプトで隠れた変数「op」をチェックできます。

于 2012-09-20T08:22:25.653 に答える
0

デフォルトでは、CGI モジュールは「スティッキー」フィールドと呼ばれる状態保持動作を実装しています。これが機能する方法は、フォームを再生成する場合、フォーム フィールドの値を生成するメソッドが param() に問い合わせて、同様の名前のパラメーターがクエリ文字列に存在するかどうかを確認することです。似たような名前のパラメータが見つかった場合は、それを使用してデフォルト値を設定します。

あなたがしたい

hidden(-name=>'action', -value=>$new_value, -override=>1)

また

hidden(-name=>'action', -value=>'default_value')

param('hidden_name', $new_value);
于 2012-09-20T02:24:30.553 に答える