/** * Присваивает выбранное значение из справочника модели, в сессии. * При выборе значения из справочника, значение присваивается в сессию предыдущей хлебной крошки, для формы, с которой был открыт справочник. * @param bool $RedirectPreviousUrl * @param ActiveRecord $ActiveRecord Модель к которой присваивается знаечния из справочника. * @param string $AttributeForeignID Имя атрибута * @return string */ public static function AssignToModelFromGrid($RedirectPreviousUrl = True, $ActiveRecord = NULL, $AttributeForeignID = NULL) { if (Yii::$app->request->isAjax) { $LastBC = Proc::GetLastBreadcrumbsFromSession(); $assigndata = filter_input(INPUT_POST, 'assigndata'); $foreign = isset($LastBC['dopparams']['foreign']) ? $LastBC['dopparams']['foreign'] : ''; if (!empty($foreign) && !empty($assigndata)) { $BC = Proc::GetBreadcrumbsFromSession(); end($BC); prev($BC); $BC[key($BC)]['dopparams'][$foreign['model']][$foreign['field']] = $assigndata; $session = new Session(); $session->open(); $session['breadcrumbs'] = $BC; $session->close(); if ($ActiveRecord instanceof ActiveRecord && is_string($AttributeForeignID)) { $field = $LastBC['dopparams']['foreign']['field']; if ($ActiveRecord->formName() === $LastBC['dopparams']['foreign']['model']) { $ActiveRecord->{$field} = $assigndata; $ActiveRecord->{$AttributeForeignID} = $foreign['id']; if ($ActiveRecord->validate()) { $ActiveRecord->save(false); } } } if ($RedirectPreviousUrl) { Yii::$app->response->redirect(Proc::GetPreviousURLBreadcrumbsFromSession()); } } else { return 'error foreign or assigndata empty AssignToModelFromGrid()'; } } }