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 が 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 に答える
0

ページを更新するとき、フォームを再送信しますか? あなたのコントローラーコード$ticket_idから、_POSTからフェッチされているように見え、この変数をモデルに渡すため、これを求めています。$ticket_idフォームを再送信しないnullと、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で、2 つの可能性 (POST と SESSION) の少なくとも 1 つに存在することを確認します。

于 2012-07-21T09:41:27.853 に答える