Как правильншо организовать использования Pjax в виджете?

пытаюсь создать виджет создания комментариев вот собственно
Comment.php

namespace frontend\widget\comments;
use common\models\Comment;
use yii\base\Widget;
use Yii;
class Comments extends Widget{
    public $goodsId;
    public function init(){
        parent::init();
    }
    public function run(){
        $commentmodel= new Comment();
        $comments=Comment::find()->where(['id_gods'=>$this->godsId])->all();
        if ($commentmodel->load(Yii::$app->request->post())) {
            $commentmodel->save();
        }
        return $this->render('html',[
            'commentmodel'  =>$commentmodel,
            'comments'      =>$comments
        ]);
    }
}


вот views/html
<section>
       <?= $this->render('_form',['commentmodel'=>$commentmodel]) ?>
</section>
<section>
    <?php Pjax::begin(['id' => 'reloded']) ?>
             <p class="description"><?= $comment->text ?></p>
<?php Pjax::end();
$this->registerJs(
    '$("document").ready(function(){
        $("#new_relode").on("pjax:end", function() {
            $.pjax.reload({container:"#reloded"});  //Reload GridView
        });
    });');
?>
</section>


вот views/_form
<?php use yii\widgets\ActiveForm;
use yii\widgets\Pjax;
use yii\helpers\Html;
Pjax::begin(['id' => 'new_relode']);
$form = ActiveForm::begin(['method'=>'post']]);
?>
     <?= $form->field($commentmodel, 'text',['options'=>['class'=>'text col-lg-10 col-md-10 col-sm-12 col-xs-24']])->textarea()->label(false); ?>
<?php ActiveForm::end(); ?>
<?php Pjax::end(); ?>


вот так вставляю на страницу
<?= Comments::widget(['godsId'=>$models->id]);?>
нажимаю на кнопку и страница полностью обновляется не подскажите почему ?
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Попробуйте поставить для pjax очень большое время ожидания.
Стандартно timeout = 1000, поэтому если он не получил ответ за 1 секунду - отправляет обычный get запрос.
Скорее всего дело именно в этом.
Проверить можно так:
Pjax::begin([
'id' => 'new_relode',
'timeout' => 1000000,
]);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы