/** * Обновление размера страницы * * @return void */ protected function _updatePageSize() { $modelName = strtolower($this->_modelName); // Делаем так, ибо при попытке править Yii::app()->session['modSettings'] - получаем ошибку $sessionSettings = Yii::app()->getUser()->getState(\YWebUser::STATE_MOD_SETTINGS, null); $currentPageSize = $this->dataProvider->getPagination()->getPageSize(); // Если переменная не найдена нужно проверить наличие данных в БД if (!isset($sessionSettings[$modelName]['pageSize'])) { $sessionSettings[$modelName] = []; $setting = Settings::model()->findAllByAttributes(['user_id' => Yii::app()->getUser()->getId(), 'module_id' => $modelName, 'param_name' => 'pageSize', 'type' => Settings::TYPE_USER]); // Если не найдена запись, создаем if (null === $setting) { $setting = new Settings(); $setting->setAttributes(['module_id' => $modelName, 'param_name' => 'pageSize', 'param_value' => $currentPageSize, 'type' => Settings::TYPE_USER]); $setting->save(); } } elseif ($currentPageSize !== $sessionSettings[$modelName]['pageSize']) { // Обновим запись в базе $setting = Settings::model()->findByAttributes(['user_id' => Yii::app()->getUser()->getId(), 'module_id' => $modelName, 'param_name' => 'pageSize', 'type' => Settings::TYPE_USER]); // Если не найдена запись, создаем if (null === $setting) { $setting = new Settings(); $setting->setAttributes(['module_id' => $modelName, 'param_name' => 'pageSize', 'param_value' => $currentPageSize, 'type' => Settings::TYPE_USER]); $setting->save(); } else { $setting->param_value = $currentPageSize; $setting->update(['param_value']); } } $sessionSettings[$modelName]['pageSize'] = $currentPageSize; // Перезаписываем сессию Yii::app()->getUser()->setState(\YWebUser::STATE_MOD_SETTINGS, $sessionSettings); }