【问题标题】:Show form success after submit in CodeIgniter在 CodeIgniter 中提交后显示表单成功
【发布时间】:2013-08-04 07:10:06
【问题描述】:

我的错误消息运行良好,但我不知道如何在会话的闪存数据中输出成功消息。

<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

}

有人可以指出正确的答案吗,或者给我一个提示,如何结帐才能实现这一目标?

谢谢

【问题讨论】:

  • 为什么不在同一页面上发布表单?
  • @sbaaaang - 我试过了,它有效,问题只是我之前不知道如何在同一页面上做
  • 呵呵没问题,还是希望你修好 ;)

标签: php codeigniter validation


【解决方案1】:

好吧,如果你没有重定向,那么你可以使用一个变量并将它扔到你的视图中。所以它在你的控制器中可能是这样的:

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

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

在您看来,messages 数组将可用并且您可以使用它。

但是,如果您想进行重定向,则需要将其临时存储在某个地方,以使其在您的请求之间保持活动状态。 codeigniter 中的 session flashdata 非常适合这个。

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

【讨论】:

  • 太棒了!这么简单,我不知道我以前怎么没有意识到这一点
猜你喜欢
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多