1

UIタブjqueryを使用して呼び出されるメソッドを1つ作成しました

function debate_view_commenttab_content(){
        $this->autoRender = false;  
        $this->layout=null;     
        if($this->RequestHandler->isAjax())
        {   

                if (!empty($this->passedArgs['debateId'])) {
                    $debateId=$this->passedArgs['debateId'];
                    $this->set('debateId',$debateId);
                    $this->DebatePost->recursive = 0;                   

                    if (!empty($this->passedArgs['greensideupdateId'])) {
                        $this->set('greensideupdateId', $this->passedArgs['greensideupdateId']);
                    }else{
                        $this->set('greensideupdateId', 'greensideupdateId');
                    }   
                    if (!empty($this->passedArgs['redsideupdateId'])) {
                        $this->set('redsideupdateId', $this->passedArgs['redsideupdateId']);
                    }else{
                        $this->set('redsideupdateId', 'redsideupdateId');
                    }   

                $arrfavdebatecomment=$this->get_infavour_records($debateId);                            
                $this->set('arrfavdebatecomment',$arrfavdebatecomment);                                 


                $arragndebatecomment=$this->get_against_records($debateId);                 
                $this->set('arragndebatecomment',$arragndebatecomment);                                 


                 if(!empty($this->passedArgs['paginatedrecord']) && $this->passedArgs['paginatedrecord']==1 && $this->passedArgs['greensideupdateId']=='greensideupdateId' ){

                        $this->render('/elements/debate_posts/append_page_record');

                }else if(!empty($this->passedArgs['paginatedrecord']) && $this->passedArgs['paginatedrecord']==1 && $this->passedArgs['redsideupdateId']=='redsideupdateId' ){

                        $this->render('/elements/debate_posts/append_page_record_against');

                }else{

                    $this->render('/elements/debate_posts/commnts_tab_content');        
                }     

                }
        }
    }

上記の方法から、以下の 2 つの関数を呼び出しました。

function get_infavour_records($debateId=Null){


        $this->DebateComment->recursive = 0;                                                                
        $favconditions = array('DebateComment.debate_id'=>$debateId,'DebateComment.debate_type'=>'in favour','DebateComment.status'=>'Active');
        $this->paginate['DebateComment'] = array(
            'limit' => 1,//Configure::read('CommentSetting.show_no_default_comments'),                  
            'recursive'=>-1
            );
        $arrfavdebatecomment=$this->paginate('DebateComment',$favconditions);   

        $this->helpers['Paginator'] = array('ajax' => 'Ajax');
        return $arrfavdebatecomment;

    }

      function get_against_records($debateId=Null){
            $this->DebateComment->recursive = 0;                                                                
            $agnconditions = array('DebateComment.debate_id'=>$debateId,'DebateComment.debate_type'=>'against','DebateComment.status'=>'Active');

                $this->paginate['DebateComment'] = array(
                'limit' => Configure::read('CommentSetting.show_no_default_comments'),
                'recursive'=>-1
                );                  
                $arragndebatecomment=$this->paginate('DebateComment',$agnconditions);
                $this->helpers['Paginator'] = array('ajax' => 'Ajax');  
                return  $arragndebatecomment;
    }

今append_page_record.ctpのビュー側に私は書いた:

<?php       $this->Paginator->options(array(
            'update' => '#'.$greensideupdateId,
            'evalScripts' => true,
            'before' => $this->Js->get('#spinner')->effect('fadeIn', array('buffer' => false)),
            'complete' => $this->Js->get('#spinner')->effect('fadeOut', array('buffer' => false)),
            'url' => array('controller' => 'debate_posts','action'=>'debate_view_commenttab_content','debateId'=>$debateId,'greensideupdateId' => $greensideupdateId,'paginatedrecord' => 1),
        ));

        echo '<div class="members_prew_next_area cf"><div class="pagination_area">'.$this->Paginator->first('first').$this->Paginator->prev('<<', array('escape' => false), null, array('class'=>'disabled','escape' => false)).$this->Paginator->numbers(array('before'=>'','after'=>'','model'=>'','modulus'=>'','separator'=>'')).$this->Paginator->next( '>>', array('escape' => false), null, array('class' => 'disabled','escape' => false)).$this->Paginator->last('last');
        echo $js->writeBuffer();
        echo ' </div></div>';


              if($arrfavdebatecomment){          
                echo '<div class="clear"><ul class="cf">';
                $i = 0;                     
                foreach ($arrfavdebatecomment as $favrecord):

                echo '<li>'.'<h2>'.($favrecord['DebateComment']['debate_comment_title']).'</h2></li>';

                endforeach;
                echo '</ul>';
                echo '</div>';
              }else{
                    __l("No record");
              }


        ?>

そしてappend_page_record_against.ctpで

<?php   $this->Paginator->options(array(
            'update' => '#'.$redsideupdateId,
            'evalScripts' => true,
            'before' => $this->Js->get('#spinner')->effect('fadeIn', array('buffer' => false)),
            'complete' => $this->Js->get('#spinner')->effect('fadeOut', array('buffer' => false)),            
            'url' => array('controller' => 'debate_posts','action'=>'debate_view_commenttab_content','debateId'=>$debateId,'redsideupdateId' => $redsideupdateId,'paginatedrecord' => 1),
        ));

        echo '<div class="members_prew_next_area cf"><div class="pagination_area">'.$this->Paginator->first('first').$this->Paginator->prev('<<', array('escape' => false), null, array('class'=>'disabled','escape' => false)).$this->Paginator->numbers(array('before'=>'','after'=>'','model'=>'','modulus'=>'','separator'=>'')).$this->Paginator->next( '>>', array('escape' => false), null, array('class' => 'disabled','escape' => false)).$this->Paginator->last('last');
        echo $js->writeBuffer();
        echo ' </div></div>';


              if($arragndebatecomment){          
                echo '<div class="clear"><ul class="cf">';
                $i = 0;                     
                foreach ($arragndebatecomment as $record):

                echo '<li>'.'<h2>'.($record['DebateComment']['debate_comment_title']).'</h2></li>';

                endforeach;
                echo '</ul>';
                echo '</div>';
              }else{
                    __l("No record");
              }


        ?>

タブメソッドを実行していると、異なるカントではなく、両方の結果に対して同じページネーションバーが2回表示されます。ページネーションとページネーターを使用して同じページに両方のページネーションを表示しますか? あなたが私を助けることができるなら、必要なことをしてください。

4

1 に答える 1

0

私が間違っていなければ、モデルをページ分割すると、デフォルト/オプション/設定が次の場所に保存されます。

$this->params['paging'][<ModelName>]

したがって、同じモデルを 2 回ページ分割すると、以前のモデルのデフォルト/オプション/設定が上書きされます。

私は現在同様の問題に取り組んでおり、これまでに考えた唯一の回避策は、各リクエストが $this->params['paging で利用可能なインデックスを持つように、最初に各 div を (Ajax 経由で) 動的に更新することでした。 '] デフォルト/オプション/設定を保存します。

于 2013-03-26T00:48:09.897 に答える