gpt4 book ai didi

Yii2 Listview动态更新dataProvider

转载 作者:行者123 更新时间:2023-12-04 22:00:30 28 4
gpt4 key购买 nike

我有一个 Listview,我想通过单击一个按钮来动态更新 dataProvider

itemController.php:

  <?php
public function actionList($category = ''){
$this->layout = '_notags';
$query['published'] = 1;
if(!empty($category)){
$category = category::findOne(['title'=>$category])->id;
$query['category_id'] = $category;
}

echo "<script>console.log('$category')</script>";

$items = new ActiveDataProvider([
'query' => Item::find()->where($query)->orderBy('date_created DESC'),
'pagination' => [
'pageSize' => 9
],
]);
return $this->render('_fresh', [
'newitems' => $items,
'category' => $category
]);
}
?>

_list.php:

<?php
use yii\widgets\ListView;
use kop\y2sp\ScrollPager;
use yii\helpers\HtmlPurifier;
use yii\widgets\Pjax;

if(empty($category))
$genre = '';

$listview = ListView::widget([
'id' => 'freshitems',
'dataProvider' => $newitems,
'itemOptions' => ['class' => 'col-xs-4 featured-item-'.$category],
'itemView' => '_item',
'pager' => ['negativeMargin'=>250, 'delay'=>0, 'spinnerSrc'=> '/img/loading.png','triggerOffset' => 3, 'class' => ScrollPager::className(), 'item'=>'.featured-item-' . $genre, 'enabledExtensions'=> Array( ScrollPager::EXTENSION_TRIGGER, ScrollPager::EXTENSION_SPINNER, ScrollPager::EXTENSION_NONE_LEFT, ScrollPager::EXTENSION_PAGING ) ],
//'summary' => false
]);

$this->registerJsFile('@web/js/main.js');
$this->registerJsFile('@web/js/jquery.quickfit.js');

Pjax::begin(['id'=>'freshitems']);
echo HtmlPurifier::process(
$listview
);
Pjax::end();

?>

main.js:

$(document).ready(function() {
$(".category-select").click("pjax:end", function() {
$.pjax.reload({container:"#freshitems"}); //Reload GridView
});
});

我尝试使用 jQuery 更改包含 _list 的 div:

index.php: 某类 $this->render('_list.php', $category)

main.js:

$('.btn').click(function(){
$('#list-container').load("item/list/" + $(this).id;
});

这样做确实会更改 ListView ,但会导致 ScrollPager 插件出现故障(无限滚动条不再正常工作)。

在我的 View 中动态更改 Listview 的 dataProvider(或完全更改 listView)的最佳方法是什么?

最佳答案

您可以向 Controller 上的操作发出 AJAX 请求,从那里返回呈现的内容(最好在新 View 文件中,使用它作为参数接收的 DataProvider)并清空 HTML,然后附加它。假设您将 ListView 放在带有一些 id 的容器中以使其更容易。

关于Yii2 Listview动态更新dataProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31751566/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com