Показать флэш-сообщение на кнопке Нажмите на Codeigniter используя PHP
Я создал метод контроллера, который позволяет пользователю изменять свои учетные данные (имя пользователя, пароль). При нажатии на кнопку " Сохранить изменения" я хотел бы отобразить флэш-сообщение с указанием статуса процесса изменения.
Но я сталкиваюсь с тривиальной проблемой, когда флэш-сообщение отображается только при обновлении URL-адреса, а не сразу после нажатия кнопки " Сохранить изменения".
Посмотреть
<div id="login">
<section class="clearfix">
<form class="form-horizontal" method = "post" action="<?php echo site_url('studentDashboardController/saveUserLoginDetails');?>">
<fieldset>
<div style="width:1363px;margin-left:10px">
<?php echo $this->session->flashdata('msgLogin'); ?>
</div>
<!-- Form Name -->
<legend>Edit Login Credentials</legend>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="username">Username</label>
<div class="col-md-6">
<input id="username" name="username" type="text" placeholder="current" class="form-control input-md">
<span class="help-block">Enter a new Username (Leave Blank to only change the Password)</span>
</div>
</div>
<!-- Password input-->
<div class="form-group">
<label class="col-md-4 control-label" for="password">Password</label>
<div class="col-md-6">
<input id="password" name="password" type="password" placeholder="New password" class="form-control input-md">
</div>
</div>
<!-- Password input-->
<div class="form-group">
<label class="col-md-4 control-label" for="confirmPassword">Confirm Password</label>
<div class="col-md-6">
<input id="confirmPassword" name="confirmPassword" type="password" placeholder="Retype password" class="form-control input-md" required="">
</div>
</div>
<!-- Button -->
<div class="form-group">
<label class="col-md-4 control-label" for=""></label>
<div class="col-md-4">
<a href="<?php echo base_url() ?>index.php/studentDashboardController/saveUserLoginDetails">
<button id="submit" name="submit" type="submit" class="btn btn-primary">Save Changes</button>
</a>
</div>
</div>
</fieldset>
</form>
</section>
</div>
studentDashboardController - saveUserLoginDetails ()
public function saveUserLoginDetails()
{
...
$msg = $this->studentprofileModel->saveUserLoginDetails($user,$this->input->post());
$msgText = $msg['msg'];
$msgType = $msg['type'];
//Loading View
$data1['details'] = $this->studentprofileModel->getUserDetails($username);
if($msgType == "danger")
{
$this->session->set_flashdata('msgLogin', '<div class="alert alert-danger text-center">Failed</div>');
echo '<script type="text/javascript">alert("'.$msgText.'")</script>';
}
else
{
$this->session->set_flashdata('msgLogin', '<div class="alert alert-success text-center">Success</div>');
}
redirect(base_url('index.php/studentDashboardController/editProfile',$data1));
}
studentprofileModel - saveUserLoginDetails ($ user, $ this-> input-> post ())
public function saveUserLoginDetails($uid,$post)
{
$username = $post['username'];
$password = $post['password'];
$confirmPassword = $post['confirmPassword'];
if ($username == null || $username == "") {
if ($password == $confirmPassword) {
$data = array(
'password' => $password,
);
$this->db->where("uid", $uid);
$this->db->update("sysuser", $data);
$msg = "Password has been successfully changed";
$type = "success";
$msgData = array(
'msg' => $msg,
'type' => $type
);
return $msgData;
}
}
else
{
if($password == $confirmPassword)
{
$data = array(
'password' => $password,
'username' => $username
);
$this->db->where("uid", $uid);
$this->db->update("sysuser", $data);
$this->load->library('session');
$sess_array = array(
'username' => ''
);
$this->session->unset_userdata('logged_in', $sess_array);
$session_data = array(
'username' => $username
);
// Add user data in session
$this->session->set_userdata('logged_in', $session_data);
$msg = "Login Data have been successfully updated";
$type = "success";
$msgData = array(
'msg' => $msg,
'type' => $type
);
return $msgData;
}
else
{
$msg = "Password doesn't match";
$type = "danger";
$msgData = array(
'msg' => $msg,
'type' => $type
);
return $msgData;
}
}
}
Эта форма сведений для входа в систему, которую необходимо изменить, на самом деле представляет собой одну вкладку из 4 различных вкладок, которые находятся внутри одного представления (полный код страницы приведен в фрагменте кода для справки). Может ли быть проблема в том, что сообщение о статусе через флэш-память не отображается сразу после нажатия кнопки?
Также я сделал проверку, как будто пароль и ввод пароля подтверждения совпадают. Но, похоже, он не выполняется должным образом. Вместо этого я всегда получаю сообщение об успехе.
Любые предложения в этом отношении будут оценены.
Фрагмент кода полного кода
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Student Dashboard View</title>
<meta name="description" content="">
...
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script src="<?php echo base_url("assets/js/customScripts/taro/bootstrap-datepicker.js")?>"></script>
<script>window.jQuery || document.write('<script src="<?php echo base_url("assets/js/customScripts/taro/vendor/jquery-1.10.1.min.js")?>"><\/script>')</script>
<!--<script src="--><?php //echo base_url("assets/js/customScripts/taro/vendor/jquery.hashchange.min.js")?><!--"></script>-->
<script src="<?php echo base_url("assets/js/customScripts/taro/vendor/jquery.easytabs.min.js")?>"></script>
<script src="<?php echo base_url("assets/js/customScripts/taro/main.js")?>"></script>
<style>
.entry:not(:first-of-type)
{
margin-top: 10px;
}
.glyphicon
{
font-size: 21px;
}
.centered {
position: fixed;
left: 50%;
transform: translate(-50%, -50%);
}
</style>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<script>window.html5 || document.write('<script src="<?php echo base_url("assets/js/customScripts/taro/vendor/html5shiv.js")?>"><\/script>')</script>
<![endif]-->
<!--[if lt IE 7]>
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
<![endif]-->
<div class="main-container">
<div class="">
<!-- Header Start -->
<header id="header">
<div id="logo">
<h2>
<?php foreach($details as $detail){?>
<?php echo $detail->name;?>
<?php }?>
</h2>
</div>
</header>
<!-- Header End -->
<!-- Main Tab Container -->
<div id="tab-container" class="tab-container">
<!-- Tab List -->
<ul class='etabs'>
<li class='tab' id="tab-about">
<a href="#about"><i class="icon-user"></i><span> User Details</span></a>
</li>
<li class='tab'>
<a href="#resume"><i class="icon-file-text"></i><span> Edit Resume</span></a>
</li>
<li class='tab'>
<a href="#login"><i class="fa fa-cloud"></i><span> Login Credentials</span></a>
</li>
<li class='tab'>
<a href="#contact"><i class="icon-envelope"></i><span> Edit Contact Details</span></a>
</li>
</ul>
<!-- End Tab List -->
<div id="tab-data-wrap">
<!-- About Tab Data -->
<div id="about">
<section class="clearfix">
<form class="form-horizontal" method ="post" role="form" enctype="multipart/form-data">
<?php echo form_open('studentDashboardController/saveUserDetails'); ?>
<?php echo $this->session->flashdata('msg'); ?>
<fieldset>
<!-- Form Name -->
<legend>User Details</legend>
...
<!-- Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="submit"></label>
<div class="col-md-4">
<a href="<?php echo base_url("/index.php/studentDashboardController/saveUserDetails"); ?>" >
<button id="submit" name="submit" type="submit" class="btn btn-primary">Save Changes</button>
</a>
</div>
</div>
</fieldset>
</form>
</section>
</div>
<!-- End About Tab Data -->
<!-- Resume Tab Data -->
<div id="resume">
<section class="clearfix">
<!-- <form class="form-horizontal" method = "post" action="--><?php //echo site_url('studentDashboardController/saveUserResumeDetails');?><!--">-->
<div class="g2">
<h3>
Work Experience
</h3>
...
<div class="form-group">
<label class="col-md-4 control-label" for="submit"></label>
<div class="col-md-4">
<a href="<?php echo base_url() ?>index.php/studentDashboardController/saveUserResumeDetails">
<button id="submit" name="submit" type="submit" class="btn btn-primary">Save Changes</button>
</a>
</div>
</div>
</div>
<!-- End Resume Tab Data -->
<!-- Login Tab Data -->
<div id="login">
<section class="clearfix">
<form class="form-horizontal" method = "post" action="<?php echo site_url('studentDashboardController/saveUserLoginDetails');?>">
<fieldset>
<div style="width:1363px;margin-left:10px">
<?php echo $this->session->flashdata('msgLogin'); ?>
</div>
<!-- Form Name -->
<legend>Edit Login Credentials</legend>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="username">Username</label>
<div class="col-md-6">
<input id="username" name="username" type="text" placeholder="current" class="form-control input-md">
<span class="help-block">Enter a new Username (Leave Blank to only change the Password)</span>
</div>
</div>
<!-- Password input-->
<div class="form-group">
<label class="col-md-4 control-label" for="password">Password</label>
<div class="col-md-6">
<input id="password" name="password" type="password" placeholder="New password" class="form-control input-md">
</div>
</div>
<!-- Password input-->
<div class="form-group">
<label class="col-md-4 control-label" for="confirmPassword">Confirm Password</label>
<div class="col-md-6">
<input id="confirmPassword" name="confirmPassword" type="password" placeholder="Retype password" class="form-control input-md" required="">
</div>
</div>
<!-- Button -->
<div class="form-group">
<label class="col-md-4 control-label" for=""></label>
<div class="col-md-4">
<a href="<?php echo base_url() ?>index.php/studentDashboardController/saveUserLoginDetails">
<button id="submit" name="submit" type="submit" class="btn btn-primary">Save Changes</button>
</a>
</div>
</div>
</fieldset>
</form>
</section>
</div>
<!-- End LoginData -->
<!-- Contact Tab Data -->
<div id="contact">
...