Идея в том, что бы комментарии добавлялись без перезагрузки страницы. Обернул форму в pjax, вывод тоже. При клике по ссылке внизу(Reply) выезжает склонированная форма(та же что сверху). При отправке комментария просто убирается форма почему-то. Внизу пример контроллера и вью. Ребят, подскажите,что не так?
Это вью
<?php Pjax::begin([ //форма отправки
'id' => 'new_com',
'enablePushState' => false,
'timeout' => 5000,
'linkSelector' => '.btn-custom'
]) ?>
<?php $form2 = ActiveForm::begin(['options' => ['data-pjax' => true,'class' => 'comm_tree']]); ?>
<?= $form2->field($comment, 'message')->textarea(['rows' => 3]) ?>
<?= $form2->field($comment, 'parent_id')->hiddenInput()->label(false) ?>
<div class="form-group">
<?= Html::submitButton('Добавить комментарий', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
<?php Pjax::end() ?>
<?php Pjax::begin([ 'id' => 'task_comments']) //вывод дерева?>
<?php $is_child = ''; $lavel = 0;
if($commentsTree):
foreach ($commentsTree as $cmt):
if(!is_object($cmt)){
var_dump($cmt);
continue;
}
if($cmt->parent_id) {
$is_child = 'is_child';
$lavel++;
}else $is_child = '';
$created_at = Yii::$app->formatter->asDatetime($cmt->created_at, "php:d.m.Y")
?>
<div class="comment <?= $is_child ?>" style="margin-left: <?= $cmt->lavel*20 ?>px">
<a name="comment<?=$cmt->id?>"></a>
<p><span class="data-grey"><?=$created_at?></span><strong><?= $cmt->user->username ?></strong></p>
<p><?= str_replace("\n", '<br>', $cmt->comment) ?></p>
<p><?=Html::a(Yii::t('app', 'Reply'), ['task/view'],['class' => 'com-reply', 'data-parent_id' => $cmt->id])?></p>
<hr>
</div>
<?php endforeach; endif;?>
<?php Pjax::end() ?>
Это контроллер
public function actionView($id)
{
\Yii::$app->user->can('learnerAccessTheTask', ['id' => $id]);
$task = Task::findOne(['id' => $id]);
$model = UserTask::findOne(['task_id' => $id, 'user_id' => \Yii::$app->user->id]);
if (!$model){
$model = new UserTask([
'status' => UserTask::STATUS_NEW,
'task_id' => $task->id,
]);
$model->setScenario(UserTask::SCENARIO_INITIAL);
$model->save();
}
$commentsTree = CommentsTree::makeTree('UserTaskComment',$model->id,0,0);
$comment = new CommentForm([
'modelId' => $model->id
]);
if ($model->load(\Yii::$app->request->post()) && $model->complete(\Yii::$app->request->post('status'))) {
\Yii::$app->session->setFlash('success', 'Сохранено');
return $this->redirect(['view', 'id' => $model->task_id]);
}
if ($comment->load(\Yii::$app->request->post()) && $comment->addTaskComment()) {
\Yii::$app->session->setFlash('success', 'Комментарий добавлен');
//здесь был рефреш
}
return $this->render('view', [
'task' => $task,
'model' => $model,
'comment' => $comment,
'commentsTree' => $commentsTree,
]);
}
Это JS
$("#new_com").on("pjax:end", function() {
$.pjax.reload({container:"#task_comments"});
});