在CodeIgniter中提交后显示表单成功

时间:2013-08-04 07:10:07

标签: php codeigniter validation

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

<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

}

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

谢谢

1 个答案:

答案 0 :(得分:3)

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

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

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

在您看来,消息数组将可用,您可以使用它。

但是,如果要进行重定向,则需要将其临时存储在某个位置以使其在请求之间保持活动状态。 codeigniter中的会话flashdata非常适合这种情况。

validation_errors();在你的控制中顺便没有做任何事情。既然你不回应它。它可能有用的事实可能是因为你在你的视图中也使用了这个功能。