Всем привет! С Yii2 знаком от силы дней 5.
Есть следующий код во вьюшке:
<?php Pjax::begin(); ?>
<?=
GridView::widget([
'dataProvider' => $products,
'tableOptions' => [
'class' => 'table table-striped table-bordered category-table'
],
'columns' => [
//....
[
'label' => 'Добавить',
'format' => 'raw',
'value' => function($data) use (&$result) {
$cat = $data->attributes['Category'];
$id = $data->attributes['ID'];
if (!$result) {
return Html::beginForm(['/site/category?name='.$cat],'post',['id'=>'add-prod-'.$id,'data-pjax'=>'0','class'=>'favorites-form']) . Html::hiddenInput('productID', $id) . Html::submitButton('Добавить', ['class' => 'mps button add-to-favorites']) . Html::endForm();
}
elseif ($result === 'Добавлено') {
return '<p class="added">'.$result.'</p>';
}
elseif($result === 'Ошибка') {
return '<p class="non-added"><a href="/site/category?name='.$cat.'">'.$result.'</a></p>';
}
}
],
],
]); ?>
<?php Pjax::end(); ?>
И в контроллере примерно следующее:
public function actionCategory($name)
{
$products = Category::getCatProv($name);
$result = '';
if(isset($_POST['productID'])) {
$getProduct = GetProduct::getProd(Yii::$app->request->post('productID'));
$result = 'Ошибка';
}
else {
$getProduct = '';
}
$userID = Yii::$app->user->id;
if($getProduct && $userID) {
$model = new AddFavorites();
//...
if( $model->save() ) {
$result = 'Добавлено';
}
}
return $this->render('category',['products'=>$products,'result'=>$result]);
}
Что не так. При нажатии на кнопку "Добавить", форма отправляет в контролер ID товара и он добавляет его в базу, соответственно по замыслу , если запись произошла, то возвращается $result = 'Добавлено' и вместо кнопки отображается текст "Добавлено". Проблема в том, что при нажатии на кнопку добавить, в гриде у всех строк исчезает кнопка и появляется надпись "Добавлено". Кто-нибудь подскажет решение или ткнёт в ошибку?