我的错误消息效果很好,但我不知道如何在会话的闪存数据中输出成功消息。
<div class="tpl-callbacks" id="tpl-callback">
<?php
if( $this->session->flashdata('message') )
$message = $this->session->flashdata('message');
if( $this->session->flashdata('error') )
$error = $this->session->flashdata('error');
if( $this->session->flashdata('success'))
$success = $this->session->flashdata('success');
// THIS WORKS WITHOUT FLASHDATA
if(function_exists('validation_errors') && validation_errors() != '')
$error = validation_errors();
// AND HOW TO DO THE SAME BUT FOR SUCCESS AND WITHOUT FLASHDATA ?
?>
<?php if( !empty($error) ):?>
<div class="alert alert-error">
<a class="close" data-dismiss="alert">×</a>
<?php echo $error;?>
</div>
<?php endif;?>
<?php if( !empty($success) ):?>
<div class="alert alert-success">
<a class="close" data-dismiss="alert">×</a>
<?php echo $success;?>
</div>
<?php endif;?>
</div>
因此,每当我在提交后进行表单检查时,我都可以在flashdata中输出错误消息和成功消息,但我不知道如何在不使用flashdata的情况下显示成功消息:
if($this->form_validation->run() == FALSE){
// $this->session->set_flashdata('error', validation_errors()); // <-- THIS WORKS IN FLASHDATA
validation_errors(); <-- THIS WORKS BUT WITHOUT FLASHDATA, WHICH IS GOOD ALSO
}else{
// Set the callback message
$this->session->set_flashdata('success', 'Success!'); // <-- THIS WORKS IN FLASHDATA
// AND HOW I SHOULD DO THE SAME, BUT WITHOUT FLASHDATA ?
// SO IT WILL WORK WITH MY MAIN TEMPLATE.PHP
}
有人可以指出我正确的答案,或者给我一些提示,以便结帐以实现这一目标吗?
谢谢
答案 0 :(得分:3)
好吧,如果你没有重定向,那么你可以使用一个变量并将它扔到你的视图中。所以它可能在你的控制器中是这样的:
$messages = array();
$messages[] = "My message";
$view_data['messages'] = $messages;
$this->load->view('your view', $view_data);
在您看来,消息数组将可用,您可以使用它。
但是,如果要进行重定向,则需要将其临时存储在某个位置以使其在请求之间保持活动状态。 codeigniter中的会话flashdata非常适合这种情况。
validation_errors();在你的控制中顺便没有做任何事情。既然你不回应它。它可能有用的事实可能是因为你在你的视图中也使用了这个功能。