在 yii2 上使用 Pjax 时出错
Error using Pjax on yii2
我试图在 yii2 上借助 pjax 实现内容自动加载,但我收到未捕获的类型错误:jQuery(...)。pjax 不是函数。我无法解决它。
这是我的视图文件:
<?php
use yii\widgets\Pjax;
use yii\helpers\Html;
?>
<title>Web-shop</title>
</head>
<body>
<div class="sort-panel">
<div class="container">
<div class="sort">
<p><span class="hidden-xs">Sort by: </span>
<?php Pjax::begin([]); ?><span class="sorter active-sorter">
<?= Html::a(
'name ',
['site/inner', 'action' => 'name'],
['class' => 'sorter name']
) ?>
<span class="glyphicon glyphicon-chevron-down"></span>
</span> | <?php Pjax::end(); ?>
<?php Pjax::begin([]); ?><span class="sorter"><?= Html::a(
'price ',
['site/inner', 'action' => 'price'],
['class' => 'sorter name']
) ?>
<span class="glyphicon"></span>
</span> | <?php Pjax::end(); ?>
<?php Pjax::begin([]); ?><span class="sorter"><?= Html::a(
'date ',
['site/inner', 'action' => 'date'],
['class' => 'sorter name']
) ?>
<span class="glyphicon"></span>
</span> | <?php Pjax::end(); ?>
<?php Pjax::begin([]); ?><span class="sorter"><?= Html::a(
'popularity ',
['site/inner', 'action' => 'popularity'],
['class' => 'sorter name']
) ?>
<span class="glyphicon"></span>
</span><?php Pjax::end(); ?>
</p>
</div>
<div class="view hidden-xs">
<span class="glyphicon glyphicon-th active-view"></span>
<span class="glyphicon glyphicon-th-list"></span>
</div>
<div class="clear"></div>
</div>
</div>
<div class="container inner-content push">
<?php foreach ($posts as $post) { ?>
<div class="event-list">
<a href="#" class="image-wrapper event-list-image col-sm-4" style="background-image: url(events/party-girls.jpg);"></a>
<div class="event-list-content col-sm-8">
<div class="col-xs-6 event-list-heading">
<h1><a href="#"><?=$post->title?></a></h1>
<p class="event-list-date"><?=$post->date?></p>
</div>
<p class="col-xs-6 event-list-price"><?=$post->price?></p>
<div class="clear"></div>
<div class="event-list-desc">
<?=$post->full_text?>
<a href="<?=$post->link?>" class="go_to">Go to</a>
</div>
</div>
<div class="clear"></div>
</div>
<?php } ?>
<div class="clear"></div>
<?php Pjax::begin(['enableReplaceState' => false]);
$a = $a +1;?>
<?= Html::a(
'Load More',
['site/inner', 'action' => $action,'a' => $a],
['class' => 'load-more']
) ?><?php Pjax::end(); ?>
</div>
<div class="clear"></div>
</body>
</html>
这是站点控制器中的操作:
public function actionInner($action = '', $a = 0)
{
$posts = Event::find()->limit(5 + $a*3)->all();
foreach ($posts as $post) {
$post->price = $post->price - $post->price * $post->discount/100;
}
if ($action === 'name') {
$posts = Event::find()->limit(5 + $a*3)->orderBy(['title' => SORT_ASC])->all();
foreach ($posts as $post) {
$post->price = $post->price - $post->price * $post->discount/100;
}
}
$news = Event::find()->limit(5 + $a*3)->orderBy(['date' => SORT_DESC])->all();
$populars = Event::find()->where(['is_popular'=> 1])->limit(5 + $a*3)->orderBy(['likes' => SORT_DESC])->all();
return $this->render('inner',[
'posts' => $posts,
'time' => date('H:i:s'),
'a' => $a,
'action' => $action
]);
}
确保您正确安装了 'fxp/composer-asset-plugin'。
composer global require "fxp/composer-asset-plugin:~1.1.3"
检查文件夹'vender/bower/yii2-pjax',如果不存在,运行
composer install
我试图在 yii2 上借助 pjax 实现内容自动加载,但我收到未捕获的类型错误:jQuery(...)。pjax 不是函数。我无法解决它。 这是我的视图文件:
<?php
use yii\widgets\Pjax;
use yii\helpers\Html;
?>
<title>Web-shop</title>
</head>
<body>
<div class="sort-panel">
<div class="container">
<div class="sort">
<p><span class="hidden-xs">Sort by: </span>
<?php Pjax::begin([]); ?><span class="sorter active-sorter">
<?= Html::a(
'name ',
['site/inner', 'action' => 'name'],
['class' => 'sorter name']
) ?>
<span class="glyphicon glyphicon-chevron-down"></span>
</span> | <?php Pjax::end(); ?>
<?php Pjax::begin([]); ?><span class="sorter"><?= Html::a(
'price ',
['site/inner', 'action' => 'price'],
['class' => 'sorter name']
) ?>
<span class="glyphicon"></span>
</span> | <?php Pjax::end(); ?>
<?php Pjax::begin([]); ?><span class="sorter"><?= Html::a(
'date ',
['site/inner', 'action' => 'date'],
['class' => 'sorter name']
) ?>
<span class="glyphicon"></span>
</span> | <?php Pjax::end(); ?>
<?php Pjax::begin([]); ?><span class="sorter"><?= Html::a(
'popularity ',
['site/inner', 'action' => 'popularity'],
['class' => 'sorter name']
) ?>
<span class="glyphicon"></span>
</span><?php Pjax::end(); ?>
</p>
</div>
<div class="view hidden-xs">
<span class="glyphicon glyphicon-th active-view"></span>
<span class="glyphicon glyphicon-th-list"></span>
</div>
<div class="clear"></div>
</div>
</div>
<div class="container inner-content push">
<?php foreach ($posts as $post) { ?>
<div class="event-list">
<a href="#" class="image-wrapper event-list-image col-sm-4" style="background-image: url(events/party-girls.jpg);"></a>
<div class="event-list-content col-sm-8">
<div class="col-xs-6 event-list-heading">
<h1><a href="#"><?=$post->title?></a></h1>
<p class="event-list-date"><?=$post->date?></p>
</div>
<p class="col-xs-6 event-list-price"><?=$post->price?></p>
<div class="clear"></div>
<div class="event-list-desc">
<?=$post->full_text?>
<a href="<?=$post->link?>" class="go_to">Go to</a>
</div>
</div>
<div class="clear"></div>
</div>
<?php } ?>
<div class="clear"></div>
<?php Pjax::begin(['enableReplaceState' => false]);
$a = $a +1;?>
<?= Html::a(
'Load More',
['site/inner', 'action' => $action,'a' => $a],
['class' => 'load-more']
) ?><?php Pjax::end(); ?>
</div>
<div class="clear"></div>
</body>
</html>
这是站点控制器中的操作:
public function actionInner($action = '', $a = 0)
{
$posts = Event::find()->limit(5 + $a*3)->all();
foreach ($posts as $post) {
$post->price = $post->price - $post->price * $post->discount/100;
}
if ($action === 'name') {
$posts = Event::find()->limit(5 + $a*3)->orderBy(['title' => SORT_ASC])->all();
foreach ($posts as $post) {
$post->price = $post->price - $post->price * $post->discount/100;
}
}
$news = Event::find()->limit(5 + $a*3)->orderBy(['date' => SORT_DESC])->all();
$populars = Event::find()->where(['is_popular'=> 1])->limit(5 + $a*3)->orderBy(['likes' => SORT_DESC])->all();
return $this->render('inner',[
'posts' => $posts,
'time' => date('H:i:s'),
'a' => $a,
'action' => $action
]);
}
确保您正确安装了 'fxp/composer-asset-plugin'。
composer global require "fxp/composer-asset-plugin:~1.1.3"
检查文件夹'vender/bower/yii2-pjax',如果不存在,运行
composer install