我有2个在我的形式提交按钮,我试图让每一个进入不同的控制器的方法。 我试图避免不了使用的多种形式。
我目前使用
<button type="submit" onclick="javascript: form.action='restore'">Restore</button>
<button type="submit" onclick="javascript: form.action='delete'">Delete</button>
......这些作品,但我不知道这是最好的方法。 有什么想法吗?
通常我想通过给按钮/输入标记一个name属性来处理多次提交。 这样你可以通过按钮提交检查提交并在同一个控制器调用一个函数/动作。 例如:
<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
}
}
希望这将有助于。
最好做的是使用JavaScript,所有它正在呈现页面之后完成之后。 这是一个替代的解决方案(抱歉,这是jQuery的我不是在香草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属性的表单操作参数,并在那之后提交表单的权利。
PS:我没有测试它,但它应该工作。
那这个呢?
<?php echo form_open('controller/method',array('id'=>'my_form')); ?>
<!--Form-->
<input type="submit" value="Submit" />
<?php echo form_close();?>
希望能帮助到你