2013-08-04 30 views
2

我的错误信息运行良好,但我不知道如何在会话的闪存数据中输出成功信息NOT。在CodeIgniter中提交后显示表单成功

<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">&times;</a> 
      <?php echo $error;?> 
     </div> 
    <?php endif;?> 
    <?php if(!empty($success)):?> 
     <div class="alert alert-success"> 
      <a class="close" data-dismiss="alert">&times;</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

为什么不在同一页上发布表单? – sbaaaang

+0

@sbaaaang - 我试过了,它的工作原理,问题只是,我不知道如何在 – aspirinemaga

+0

之前在同一页上做到这一点ehehe没有问题,希望你修好了;) – sbaaaang

回答

3

好吧,如果你不是重定向,那么你可以使用一个变量,将其投入到您的视图。所以它可能是这样的在你的控制器:

$messages = array(); 
$messages[] = "My message"; 

$view_data['messages'] = $messages; 
$this->load->view('your view', $view_data); 

在你的看法,消息阵列将可用,你可以使用它。

但是,如果您想要重定向,则需要暂时​​将其存储在某处,以便在请求之间保持活动状态。 codeigniter中的会话flashdata非常适合这一点。

validation_errors();在你的控制中,不会做任何事情。既然你不回应它。它可能起作用的事实可能是因为你也在你的视图中使用了该功能。

+0

太棒了!这么简单,我不知道我以前怎么没有意识到 – aspirinemaga