Codeigniter Flash数据模态窗口中的消息:已编辑

时间:2017-07-10 12:06:12

标签: php codeigniter bootstrap-modal

我有一个查看页面 company_view ,它显示了大学的所有信息,有自己的控制器 company.php ,可以通过模型从数据库中获取结果。< / p>

在此页面中添加了一个模态表单,用户输入其详细信息并将该数据发送到数据库。 换句话说,自定义注册表单。

http://startcodeigniter.blogspot.in/2015/12/create-simple-contact-form-in.html

但是上面的形式是在一个模态中。

插入过程成功但我希望成功消息显示在模态本身,它重定向到另一个页面=&gt; (提交表单后,新的控制器页面 contactform / index )。 通过一些解决方案来修复它,但似乎没有任何结果。

是否有任何AJAX方式将数据提交给控制器,以防止重定向? 一直在寻找类似的AJAX例子,但仍然没有运气。

我在寻找的是当用户提交数据时,模态显示数据在没有重定向的情况下提交。

任何帮助/主管都会对我有所帮助!

更新了视图 - company_view.php

<button type="button" class="btn btn-info btn-lg btn-block" data-toggle="modal" data-target="#enquire">Enquire</button>


    <div class="modal fade" id="enquire">
    <div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
            <h4 class="modal-title">Apply for "<?php echo $row_company->company_name;?> "</h4>
        </div>
        <div class="modal-body">
            <?php $attributes=a rray( "name"=> "contactform"); echo form_open("contactform/index", $attributes);?>
            <div class="form-group">
                <label for="name">Name</label>
                <input class="form-control" name="name" placeholder="Your Full Name" type="text" value="<?php echo set_value('name'); ?>" />
                <span class="text-danger"><?php echo form_error('name'); ?></span>
            </div>

            <div class="form-group">
                <label for="email">Email ID</label>
                <input class="form-control" name="email" placeholder="Email-ID" type="text" value="<?php echo set_value('email'); ?>" />
                <span class="text-danger"><?php echo form_error('email'); ?></span>
            </div>

            <div class="form-group">
                <label for="subject">Subject</label>
                <input class="form-control" name="subject" placeholder="Subject" type="text" value="<?php echo set_value('subject'); ?>" />
                <span class="text-danger"><?php echo form_error('subject'); ?></span>
            </div>

            <div class="form-group">
                <label for="message">Message</label>
                <textarea class="form-control" name="message" rows="4" placeholder="Message">
                    <?php echo set_value( 'message'); ?>
                </textarea>
                <span class="text-danger"><?php echo form_error('message'); ?></span>
            </div>

            <div class="form-group">
                <button name="submit" type="submit" class="btn btn-success">Submit</button>
            </div>
            <?php echo form_close(); ?>
            <?php echo $this->session->flashdata('msg'); ?>
        </div>
    </div>
    </div>
    </div>

表单控制器 - contactform.php

<?php
class Contactform extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->helper(array('form','url'));
        $this->load->library(array('session', 'form_validation'));
        $this->load->database();
    }

    function index()
    {
        //set validation rules
        $this->form_validation->set_rules('name', 'Name', 'trim|required|xss_clean|callback_alpha_space_only');
        $this->form_validation->set_rules('email', 'Emaid ID', 'trim|required|valid_email');
        $this->form_validation->set_rules('subject', 'Subject', 'trim|required|xss_clean');
        $this->form_validation->set_rules('message', 'Message', 'trim|required|xss_clean');

        //run validation on post data
        if ($this->form_validation->run() == FALSE)
        {   //validation fails
            $this->load->view('company_view',$data);
        }
        else
        {
            //insert the contact form data into database
            $data = array(
                'name' => $this->input->post('name'),
                'email' => $this->input->post('email'),
                'subject' => $this->input->post('subject'),
                'message' => $this->input->post('message')
            );

            if ($this->db->insert('contacts', $data))
            {
                // success
                $this->session->set_flashdata('msg','<div class="alert alert-success text-center">We received your message! Will get back to you shortly!!!</div>');
                redirect('contactform/index');
            }
            else
            {
                // error
                $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Oops! Some Error.  Please try again later!!!</div>');
                redirect('contactform/index');
            }
        }
    }

    //custom callback to accept only alphabets and space input
    function alpha_space_only($str)
    {
        if (!preg_match("/^[a-zA-Z ]+$/",$str))
        {
            $this->form_validation->set_message('alpha_space_only', 'The %s field must contain only alphabets and space');
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }
}
?>

2 个答案:

答案 0 :(得分:0)

我使用过一种非正统的方法。

将你的模态放在你的html页面中,你的flashdata就像。

 <div class="modal fade" id="messageModal" role="dialog">
 <?php echo $this->session->flashdata('msg'); ?> 
</div>

然后在脚本标记中加载该模式,如果设置了flashdata

<?php if(!empty($this->session->flashdata('msg')) { ?>
 <script>
    $(window).on('load',function(){
       $('#messageModal').modal('show');
    });
 </script>
 <?php } ?>

这可能不是最佳答案。但绝对是一种方法。 欢迎/欢迎所有建议或改进

答案 1 :(得分:0)

@Zeehan Akhtar Mohammed在这里回答。当用户在表单中输入详细信息并单击提交时,数据将插入到数据库中,$this->session->set_flashdata()成功消息以模态显示。正如您所说

查看/ college_view.php

    <!DOCTYPE html>
<html lang="en">
<head>
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="row">
    <div class="col-md-6 col-md-offset-3">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title">Contact Form</h3>
            </div>
            <div class="panel-body">
                <?php 
                    $attributes = array(
                        "method"=>"post",
                        "id"=>"contactform"
                    );
                    echo form_open('Contactform/get_data',$attributes);?>
                <div class="form-group">
                    <label for="name">Name</label>
                    <input class="form-control" name="name" placeholder="Your Full Name" type="text" value="" required/>

                </div>
                <div class="form-group">
                    <label for="email">Email ID</label>
                    <input class="form-control" name="email" placeholder="Email-ID" type="text" value=""  required/>
                </div>
                <div class="form-group">
                    <label for="subject">Subject</label>
                    <input class="form-control" name="subject" placeholder="Subject" type="text" value=""  required />

                </div>
                <div class="form-group">
                    <label for="message">Message</label>
                    <textarea class="form-control" name="message" rows="4" placeholder="Message"required></textarea>

                </div>
                <div class="form-group">
                    <input type="submit" name="submit_button" class="btn btn-success">
                </div>
                <?php echo form_close();?>
                </div>
        </div>
    </div>
    </div>
    <div class="container">
            <?php
                if($this->session->flashdata('report') !=   ''){
                ?>

                    <script>
                    $(document).ready(function(){
                        $("#myModal").modal();
                    });
                    </script>

                <?php
                }
            ?>
    </div>

    <div class="modal fade" id="myModal" role="dialog">
        <div class="modal-dialog">

            <!-- Modal content-->
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                    <h4 class="modal-title">Modal Header</h4>
                </div>
                <div class="modal-body">
                    <h1 class="text-center"><?php echo $this->session->flashdata('report')?></h1>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                </div>
            </div>

        </div>
    </div>
</body>
</html>

控制器/ Contactform.php

    <?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Contactform extends CI_Controller {
    public function __construct(){
        parent::__construct();
        $this->load->helper('html');
        $this->load->helper('form');
        //LOAD SESSION LIBRARY HERE 
        $this->load->library('session');
    }

    public function index() {
        $this->load->view('college_view');
    }

    public function get_data(){
        $submitbtn=$this->input->post('submit_button');
        if($submitbtn == true){

            $arr = array(
                'name'=>$this->input->post('name'),
                'email'=>$this->input->post('email'),
                'subject'=>$this->input->post('subject'),
                'message'=>$this->input->post('message'),
            );

            //NOW INSERT THE DATA TO DATABASE   
            $this->db->insert('CI_input',$arr);

            if($this->db->insert_id() == true){         
                $this->session->set_flashdata('report','Data successfully inserted');
                redirect('Contactform/index');
            }
            else
            {
                echo "Error";
            }
        }
    }
}
?>

注意您可以在配置文件夹中的AUTOLOAD.PHP页面添加帮助和库,但是显示我添加__construct方法##

随意问