私は 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',
));
?>