我的表单中有2个提交按钮,我试图让每个按钮都使用不同的控制器方法。我试图避免使用多种形式。
我正在使用
<button type="submit" onclick="javascript: form.action='restore'">Restore</button>
<button type="submit" onclick="javascript: form.action='delete'">Delete</button>
......哪个有效,但我不确定这是不是最好的方法。有什么想法吗?
答案 0 :(得分:5)
通常我想通过给按钮/输入标签命名attr来处理多个提交。通过这种方式,您可以在同一个控制器中提交和调用一个函数/操作,只需检查提交的按钮即可。 e.g:
<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>
然后在你的控制器中,会有一个名为“process”的函数执行此操作:
function process(){
if(isset($_POST["restore"])) {
//do your restore code
}
if(isset($_POST["delete"])){
//do your delete code
}
}
希望这会有所帮助。
答案 1 :(得分:2)
最好的办法是使用javascript,毕竟它是在渲染页面后完成的。这是一个替代解决方案(对不起,它是jQuery,我不是很擅长vanilla JS)。
查看:
<div id="submit-buttons" action="<?php echo site_url('controller/postmethod1'); ?>">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属性更新表单操作参数,然后在此之后立即提交表单。
P.s:我没有测试它,但它应该可以工作。
答案 2 :(得分:0)
这个怎么样?
<?php echo form_open('controller/method',array('id'=>'my_form')); ?>
<!--Form-->
<input type="submit" value="Submit" />
<?php echo form_close();?>
希望有所帮助