В общем, запилил пока заплатку. В контролер добавил $result_id вот так:
$result_id = '';
  if(isset($_POST['productID'])) {
    $getProduct = GetProduct::getProd(Yii::$app->request->post('productID'));
    $result_id = Yii::$app->request->post('productID');
    $result = 'Ошибка';
  }
И во вьюшке:
'value' => function($data) use (&$result, &$result_id) {
        $cat = $data->attributes['Category'];
        $id = $data->attributes['ID'];
        $form = Html::beginForm(['/site/category?name='.$cat],'post',['data-pjax'=>'0','class'=>'favorites-form']) . Html::hiddenInput('productID', $id) . Html::submitButton('Добавить', ['class' => 'mps button add-to-favorites']) . Html::endForm();
        if (!$result) {
            return $form;
        }
        elseif (($result === 'Добавлено') && ($result_id == $id)) {
            return '<p class="added"><a href="/site/category?name='.$cat.'">'.$result.'</a></p>';
        }
        elseif(($result === 'Ошибка') && ($result_id == $id)) {
            return '<p class="non-added"><a href="/site/category?name='.$cat.'">'.$result.	'</a></p>';
        }
        else {
            return $form;
        }
    }
Смотреть конечно тошно, но кое-как свою работу выполняет.
Как сделать, чтобы паякс выполнялся только из вызванной ячейки я так и не нашёл. Если кто знает как это должно работать и выглядеть, будут бесконечно благодарен.