0

我正在从我的数据库中检索一列并将该值存储在我的控制器中的一个数组中。我将该数组传递给视图页面,并将该值显示给用户。到目前为止,所有事情都运行良好。但问题是,当我刷新页面时,它不显示控制器从模型中获得的值,而只显示空白页面..\我还尝试将值存储在会话中并使用该值,但这似乎并不为我工作.. :( 这是我的控制器代码 :-

function full_post_view(){
            $data= array(
                'ticket_id' => $this->input->post('ticket_id')
            ); 
            $this->session->set_userdata($data); 
            $ticket_id = ($this->input->post('ticket_id')) ? $this->input->post('ticket_id') : $this->session->userdata('ticket_id');
//                $post_content = $this->session->userdata('post_content');
            echo $ticket_id;
            $this->load->model('helpdesk_model');
            $all_comments = $this->helpdesk_model->fetchComments($ticket_id);
            $is_post_closed = $this->helpdesk_model->fetchPostStatus($ticket_id);
            if($all_comments->num_rows > 0)  {
                foreach ($all_comments->result() as $comments_value) {
                    $comments = $comments_value->comments;
                }
                $count=1;
                Template::set('all_comments',$all_comments);
                Template::set_view('helpdesk/full_post_view');
            }
            else {
                $count=0;
                Template::set('post_content',$this->input->post('post_content'));
            }                 
            Template::set('is_post_close',$is_post_closed);
            Template::set('ticket_id',$ticket_id);
            Template::set('is_post_closed',$is_post_closed);
            Template::set('post_content',$post_content);
            Template::set('count',$count);                
            Template::set('is_post_closed',$is_post_closed);                
            Template::render();
    }

这是我的观点:-

<?php $post=Template::get('post_content'); ?>
<?php  $ticket_id=Template::get('ticket_id'); ?>
<?php  $is_close = Template::get('is_close'); ?>
<h4>Your Problem :- </h4>
<?php echo $post; ?>
<hr/>
<?php foreach ($is_post_closed->result() as  $value) {
    $is_close = $value->is_close;
} ?>
<?php if(Template::get('count') > 0) : ?>
    <?php foreach($all_comments->result_array() as $commentsRow) : ?>
        <?php echo word_wrap($commentsRow['comments'],15); ?>
    <?php echo " by->"; ?>
    <?php echo $commentsRow['username']; ?>
    <?php echo $commentsRow['role_name']; ?>
    <hr/>
<?php endforeach; ?>
<?php else : ?>
    <br/>
    No Comments Yet
<?php endif; ?>
<?php if($is_close == 0 ) : ?>
    <?php echo form_open('helpdesk/newComment'); ?>
    <?php echo form_hidden('ticket_id',$ticket_id); ?>
    <?php  echo form_hidden('post_content', $post); ?>
    <?php echo form_textarea('comment_from_user'); ?>
    <?php echo form_submit('submit', 'Comment '); ?>
    <?php echo form_close(); ?>
<?php endif; ?>
<?php if($is_close==0) : ?>
<?php echo form_open('helpdesk/closePost'); ?>
<?php echo form_hidden('ticket_id', $ticket_id); ?>
<?php  echo form_hidden('post_content', $post); ?>  
<?php echo form_submit('submit','close post'); ?>
<?php echo form_close(); ?>
<?php else : ?>
<?php echo form_open('helpdesk/reopenPost'); ?>
<?php echo form_hidden('ticket_id', $ticket_id); ?>
<?php echo form_submit('submit','Reopen post'); ?>
<?php echo form_close(); ?>
<?php endif; ?>

编辑: 我想问当用户刷新页面时如何将数据库内容再次加载到视图中。

编辑了我的控制器并查看代码

4

2 回答 2

0

刷新页面时,是否重新发送表单?我问这个是因为从您的控制器代码中,它看起来像是$ticket_id从 _POST 获取的,并且您使用将此变量传递给模型。如果您不重新发送表单,$ticket_idnull不会从 DB 中获取任何内容。

编辑:

在您的控制器中替换:

$ticket_id = $this->input->post('ticket_id'); 

和:

$ticket_id = ($this->input->post('ticket_id')) ? $this->input->post('ticket_id') : $this->session->userdata('ticket_id');

并确保每个请求ticket_id至少存在两种​​可能性(POST 和 SESSION)中的一种

于 2012-07-21T09:41:27.853 回答
0

解决了 :) 问题是当我刷新页面时,ticket_id 设置为 0 并且该值作为 post 传递。所以会话值是新的ticket_id,即0,所以它什么也没显示。我这样做了:-

if(isset($_POST['ticket_id'])) {
$data= array(
'ticket_id' => $this->input->post('ticket_id'),
                'post_content' => $this->input->post('post_content')
             ); 
             $this->session->set_userdata($data); 
}
        $ticket_id =$this->session->userdata('ticket_id');
        $post_content =$this->session->userdata('post_content');

即,我第一次在集合中发布时将ticket_id 存储在会话中。下次刷新页面时,未设置ticket_id 帖子并从会话中获取数据。

于 2012-07-25T07:42:53.960 回答