1

フォームに2つの送信ボタンがあり、それぞれを異なるコントローラーメソッドに移動させようとしています。複数のフォームの使用を避けようとはしていません。

私は現在使用しています

<button type="submit" onclick="javascript: form.action='restore'">Restore</button>
<button type="submit" onclick="javascript: form.action='delete'">Delete</button>

...これは機能しますが、それが最善の方法かどうかはわかりません。何かご意見は?

4

3 に答える 3

5

通常、ボタン/入力タグに名前属性を付けて、複数の送信を処理したいと思います。このようにして、どのボタンが送信されたかを確認するだけで、1 つの同じコントローラーで 1 つの関数/アクションを送信して呼び出すことができます。例えば:

<form id="your_form" action="your_controller/process" method="post">
<input type="submit" name="restore" id="restore" value="Restore" />
<input type="submit" name="delete"  id="delete" value="Delete" />
</form>

次に、コントローラーには、これを行う「プロセス」という関数があります。

function process(){
  if(isset($_POST["restore"])) {
    //do your restore code
  }

  if(isset($_POST["delete"])){
    //do your delete code
  }   
}

これが役立つことを願っています。

于 2012-07-04T00:31:28.883 に答える
2

最善の方法は、ページがレンダリングされた後に実行されるため、javascript を使用することです。これは別の解決策です (申し訳ありませんが、バニラ JS が苦手な jQuery です)。

意見:

<div id="submit-buttons" action="<?php echo site_url('controller/postmethod1'); ?>​"​​​​​&gt;Submit 1</div>

<div id="submit-buttons" action="<?php echo site_url('controller/postmethod2'); ?>">Submit 2</div>​

JS:

​$(function(){
    $('.submit-buttons').click(function(){
        $('form').attr('action',$(this).attr('action')).submit();
        return false;
    });

});​

したがって、ボタンがクリックされた後、送信ボタンのアクション属性からフォーム アクション パラメータを更新し、その直後にフォームを送信します。

Ps: テストはしていませんが、動作するはずです。

于 2012-07-04T00:09:52.913 に答える
0

これはどうですか?

<?php echo form_open('controller/method',array('id'=>'my_form')); ?>
<!--Form-->
<input type="submit" value="Submit" />
<?php echo form_close();?>

それが役に立てば幸い

于 2012-07-03T22:53:31.357 に答える