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

通常我想通过给按钮/输入标签一个名称 attr 来处理多个提交。通过这种方式,您可以在同一个控制器中提交和调用一个功能/动作,只需检查提交了哪个按钮。例如:

<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,毕竟它是在页面呈现后完成的。这是一个替代解决方案(对不起,它是 jQuery,我不太擅长 vanilla JS)。

看法:

<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;
    });

});​

所以当按钮被点击后,它会从提交按钮的action属性中更新表单动作参数,然后立即提交表单。

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 回答