1. Попробуйте использовать js framework, например, vue. Таких мелочей при вашем подходе может всплыть масса. И, как уже вам советовали, стоит подумать о разделении проекта на front и back. Либо внедрить vue в yii2.
2. Если же это вам не нужно и вы хотите идти своим путём можно в контроллере сделать примерно так:
if (Yii::$app->request->isAjax) {
return $this->renderPartial('_list', [
'dataProvider' => $dataProvider,
'checker' => $this->checker
]);
} else {
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'checker' => $this->checker,
'futureCount' => $futureCount,
'pastCount' => $pastCount,
'myCount' => $myCount,
]);
}
index.php
<div class="box-body">
<div id="search-content">
<?= $this->render('_list', [
'dataProvider' => $dataProvider,
'checker' => $checker
]) ?>
</div>
</div>
Таким образом, там, где идет загрузка от yii2 - там выводится
index.php
в котором рендерится
_list.php
, там где вы обновляете страницу без перезагрузки контроллер вам выдаст только структуру в
_list.php
. После добавлении записи - просто перезагружаете страницу ajax.