如何在表单中添加2个不同的提交按钮(带CI)?

时间:2012-07-09 07:54:38

标签: forms codeigniter paypal

我有一个表单,我希望用户选择2种不同的结帐方式:

假设用户输入了他的地址,姓名和信用信息等信息。 使用Paypal Pro,最后,我希望他能够选择是否要通过paypal或直接付款结账......这将导致第二种形式。

顺便说一句,使用CodeIgnieter,当跟随另一个表单时,我得到了第二个表单总是运行的验证过程,我的意思是当我从第一个表单到第二个表单时,在第二个表单中我即使用户没有尝试提交,也会看到每个字段都会显示我的错误消息。有没有办法避免这个错误?

谢谢!

3 个答案:

答案 0 :(得分:9)

已编辑:请参阅答案的结尾

你应该像平常一样:

查看:

<form method="post" action="mysite.com/submit">
    <input type="text" name="name1">
    <input type="text" name="name2">
    <input type="text" name="name3">

    <input type="submit" name="sbm" value="Direct">
    <input type="submit" name="sbm" value="PayPal">
</form>

在PHP(可能是控制器)中:

if($this->input->post('sbm') == "PayPal") { 
    // do something with PayPal
} else {
    // do something with direct payment
}

已编辑:如果您希望按钮标题(可见文字)与值不同,请使用<button>元素而不是<input type="submit">

<button name="payment_type" value="paypal" type="submit">I want to pay with PayPal</button>
<button name="payment_type" value="direct" type="submit">Or should I go with Direct Payment?</button>

答案 1 :(得分:1)

使用某些条件来应用验证规则。

if(isPayPalPro())
{
    $this->form_validation->set_rules(....);
}else
{
    //validation credit card payment
}

使用某些条件而不是isPayPalPro()。

答案 2 :(得分:1)

我个人更喜欢的替代方案是以不同的方式命名每个提交按钮,如下所示:

<form method="post" action="mysite.com/submit">
    <input type="text" name="name1">
    <input type="text" name="name2">
    <input type="text" name="name3">

    <input type="submit" name="direct" value="Direct">
    <input type="submit" name="paypal" value="PayPal">
</form>

然后检查发送了哪个值:

if($this->input->post('direct')){
    //Direct button was pressed
}
if($this->input->post('paypal')){
    //Paypal button was pressed
}