我有一个查看页面 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">×</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;
}
}
}
?>
答案 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)
$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">×</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";
}
}
}
}
?>
__construct
方法##