form_submit codeigniter无法正常工作

时间:2015-01-05 00:31:00

标签: codeigniter form-submit

所以我在codeigniter中遇到了form_submit问题。我有一个名为welcome的控制器,其方法名为email。每当我点击提交按钮时,页面都会刷新,但只需添加?firstname =& email =& message =& submit =提交到我的网址但不执行该方法。这可能是什么原因发生了?

下面是我的HTML代码。

                        <form role="form">
                        <div class="form-group">
                            <label>Name</label>

                            <?php $this->load->helper("form"); ?>
                            <?php  echo validation_errors('<p class = "error">'); ?>
                            <?php echo form_open('welcome/email');

                            $data = array('type'=>'text','class'=>'form-control',        'name'=>'firstname');
                            echo form_input($data);
                            ?>
                        </div>
                        <div class="form-group">
                            <label>Email</label>
                            <?php
                            $data = array('type'=>'email','class'=>'form-control', 'name'=>'email');
                            echo form_input($data);
                            ?>
                        </div>
                        <div class="form-group">
                            <label>Message</label>
                            <?php
                            $data= array('type'=>'text','name'=>'message','class'=>'form-control','rows'=>7);
                            echo form_textarea($data);
                            ?>
                        </div>
                        <div class="pull-right">



                        <!--<button type="submit" class="btn btn-custom btn-lg" action="welcome/email">Submit</button> -->
                        <?php

                        echo form_submit('submit','Submit');
                        echo form_close();
                        ?>
                        </div>

这是我的控制器

<?php /*if ( ! defined('BASEPATH')) exit('No direct script access allowed');*/

    class Welcome extends CI_Controller {



     function index(){
        $this->load->view('index-sidebar');

    }


    function email(){

        $this->load->library('form_validation');


        $this->form_validation->set_rules('email', 'Email Address','required|valid_email');
        $this->form_validation->set_rules('firstname', 'Name', 'required|min_length[2]|max_length[30]');
        $this->form_validation->set_rules('message', 'Message', 'required|min_length[5]|max_length[200]');

        if ($this->form_validation->run()==FALSE){
            $this->load->view('message not sent');

        }

        else{
            $this->load->library('email');

            $this->email->from(set_value('email'),set_value('name'));
            $this->email->to("mhansen1989@gmail.com");
            $this->email->subject('tutoring');
            $this->email->message(set_value('message'));


            $this->email->send();

            echo $this->email->print_debugger();
            $this->load->view('success');
        }


    }
}

2 个答案:

答案 0 :(得分:1)

表单标签中没有操作参数。您是否提交表单?

试试这个

<form action="<?= base_url().'welcome/email'?>" role="form" method="post">

答案 1 :(得分:0)

所以这里

 if ($this->form_validation->run()==FALSE){
        $this->load->view('message not sent');

    }

在您的正确视图名称中输入“未发送消息&#39;

$this->load->helper("form");

将你的助手加载到控制器中 - 更好的是配置/自动加载

和这个

$data = array('type'=>'text','class'=>'form-control','name'=>'firstname');
 echo form_input($data);

在表单中反复重复$ data。从技术上讲它会起作用,但它会在某些时候陷入困境,所以让它们成为不同的名字

$first = array('type'=>'text','class'=>'form-control','name'=>'firstname');
 echo form_input($first);

如果验证为false,您需要再次显示表单中的值。看看http://www.codeigniter.com/user_guide/libraries/form_validation.html#repopulatingform