【问题标题】:How to put 2 different Submit Buttons in a form (with CI)?如何将 2 个不同的提交按钮放在一个表单中(使用 CI)?
【发布时间】:2012-07-08 14:42:24
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: forms codeigniter paypal


    【解决方案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
    }
    

    【讨论】:

      【解决方案2】:

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

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

      使用一些条件代替 isPayPalPro()。

      【讨论】:

        【解决方案3】:

        已编辑:见答案结尾

        你应该像往常一样做:

        查看:

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

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

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

        【讨论】:

        • 谢谢,关于这个错误有什么想法吗?不考虑 CI,在 PHP 中,如果你有 2 个表单一个接一个,你不会对第二个的验证过程有任何问题吗?似乎当您单击提交第一个表单时,它会尝试同时提交第二个表单,即使它还没有弹出。然后 CI 向我显示错误消息...
        • 如果不检查您的代码就不能说太多。您的表格名称是否不同?你确定它们不相交吗? (应该是&lt;form&gt;&lt;/form&gt;&lt;form&gt;&lt;/form&gt;,而不是&lt;form&gt;&lt;form&gt;&lt;/form&gt;&lt;/form&gt;
        • 是的,它在控制器中有 2 个不同的功能,2 个不同的视图。我会在明天早上编辑你的帖子 :) 需要睡觉!
        • 因为这是一个不同的问题,你最好换一个新的。
        • 绝对没有必要让每个按钮都具有相同的name...IMO,一种不好的做法。给每个按钮一个唯一的nameif ($this-&gt;input-&gt;post('unique_name')) { ... 会很好地工作。
        猜你喜欢
        • 2014-01-31
        • 1970-01-01
        • 1970-01-01
        • 2017-10-04
        • 1970-01-01
        • 1970-01-01
        • 2013-08-31
        • 1970-01-01
        • 2017-05-23
        相关资源
        最近更新 更多