0

私は Yii 初心者で、現在、このチュートリアルに表示されている手順に従って、Ajax フィルターを CListView に追加する作業を行っています。

基本的に、変更された IssueController/Index アクションで $issue_nr を初期化すると、フィルターは完全に機能しますが、何らかの理由で $_Get 変数が送信ボタンを介して渡されません!

私はしばらく探していましたが、非常に単純なステップを逃したと感じているため、これは私を夢中にさせています!

あらゆる種類のヘルプやアドバイスをいただければ幸いです。

私のインデックスアクションは次のとおりです。

public function actionIndex($issue_nr=NULL)
    {     
    $criteria = new CDbCriteria();
    if (strlen($issue_nr) > 0)
        $criteria->addSearchCondition('issue_nr_fk', $issue_nr, true);
    $dataProvider = new CActiveDataProvider('Issue', array('criteria' => $criteria,));
    $this->render('index', array('dataProvider' => $dataProvider));
    }

そしてビュー/問題/インデックスで

     <div class="row">

<?php

  echo CHtml::beginForm(CHtml::normalizeUrl(array('Issue/index')), 'get', array('id'=>'filter-form'))
  . CHtml::textField('string', (isset($_GET['string'])) ? $_GET['string'] : '', array('id'=>'issue_nr'))
  . CHtml::submitButton('Search', array('submit' => array('Issue/index', 'id'=>$_GET['string'])))
  . CHtml::endForm();

 //JQUERY FUNCTION TO REDUCE DBQUERIES
 Yii::app()->clientScript->registerScript('search',
      "var ajaxUpdateTimeout;
       var ajaxRequest;
       $('input#issue_nr_fk').keyup(function(){
       ajaxRequest = $(this).serialize();
       clearTimeout(ajaxUpdateTimeout);
       ajaxUpdateTimeout = setTimeout(function () {
       $.fn.yiiListView.update(

    // this is the id of the CListView
       'ajaxListView',
       {data: ajaxRequest}
       )
      },
    // this is the delay
         300);
        });"
       );
     ?>
 </div>

 <?php
    $this->widget('zii.widgets.CListView', array(
    'dataProvider' => $dataProvider,
    'itemView' => '_view',
    'sortableAttributes'=>array('issue_nr_fk',
    'c_date'),
    'id'=>'ajaxListView',
     ));
 ?>
4

1 に答える 1

0

私があなたを正しく理解していれば、フォーム アクションを "CHtml::normalizeUrl(array('Issue/index')") として "get" パラメーターなしで設定しているため、コントローラーでそれらを受信しません。空の文字列を使用してください。アクション - フォームはすべてのパラメータが存在する現在のページ URL に送信されます。

于 2012-12-20T18:08:44.120 に答える