Upd
upd. я бы обновлял данные непосредственно в связной таблице с посещениями и после добавления новой записи или удаления обновлял список посещений на странице.
В представлении на кнопку "+добавить" повесьте скрипт js при клике загружать форму в
<div class='add_form'>
$('.add_form').load('экшн добавить посещение')
в том же скрипте на сабмит загруженной формы добавьте ajax запрос на экшн добавить посещение
в экшене 'экшн добавить посещение'
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return json_encode($model->id); //тут можете передать параметры для формирования html с добавленным пунктом
}
return $this->renderAjax('_форма_добавить_посещение', [
'model' => $model,
]);
Его результат будете разбирать в ответе.
результат запроса анализируйте (например result[1] != '<' в зависимости от результата можно проверять с чего начинается строка чтобы понять что с ней делать) если валидация успешна, формируйте html с полученными данными и добавляйте в конец списка или отдальным ajax обновите список посещений типа
$('.list').load('url_update_list')
,
если не успешна возвращайте result в $('.add_form')
upd. для удаления на кнопку X повесьте аналогично js ajax с вызовом экшена на удаление, передавайте параметр ид удаляемой записи. На result повесьте ajax функцию обновления списка.