2

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

<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

}

有人可以指出我正确的答案,或者给我一个提示什么来实现这个结帐?

谢谢

4

1 回答 1

3

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

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

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

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

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

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

于 2013-08-04T15:36:14.887 回答