本文整理汇总了PHP中app\func\Proc::SetSessionValuesFromAR方法的典型用法代码示例。如果您正苦于以下问题:PHP Proc::SetSessionValuesFromAR方法的具体用法?PHP Proc::SetSessionValuesFromAR怎么用?PHP Proc::SetSessionValuesFromAR使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类app\func\Proc
的用法示例。
在下文中一共展示了Proc::SetSessionValuesFromAR方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: actionCreate
public function actionCreate()
{
$model = new TrOsnov();
$Mattraffic = new Mattraffic();
$Material = new Material();
$Employee = new Employee();
$mattraffic_number_max = NULL;
// Если форма отправлена на сервер, получаем выбранную материальную ценность
$id_mattraffic = isset(Yii::$app->request->post('TrOsnov')['id_mattraffic']) ? Yii::$app->request->post('TrOsnov')['id_mattraffic'] : '';
$transaction = Yii::$app->db->beginTransaction();
try {
// Если форма отправлена на сервер, то создать запись перемещения мат цен-ти в mattraffic
if (!empty($id_mattraffic)) {
$Mattrafficcurrent = Mattraffic::findOne($id_mattraffic);
$Mattraffic->attributes = $Mattrafficcurrent->attributes;
$Mattraffic->mattraffic_date = date('Y-m-d');
$Mattraffic->mattraffic_number = isset(Yii::$app->request->post('Mattraffic')['mattraffic_number']) ? Yii::$app->request->post('Mattraffic')['mattraffic_number'] : NULL;
$Mattraffic->mattraffic_tip = 3;
if (isset($Mattraffic->scenarios()['traffic'])) {
$Mattraffic->scenario = 'traffic';
}
if ($Mattraffic->validate()) {
$Mattraffic->save(false);
$model->id_mattraffic = $Mattraffic->mattraffic_id;
}
//Акт установки уже создан и берется из URL параметра
$model->id_installakt = (string) filter_input(INPUT_GET, 'idinstallakt');
//Сохраняем кабинет в модель из отправленной формы
$model->tr_osnov_kab = isset(Yii::$app->request->post('TrOsnov')['tr_osnov_kab']) ? Yii::$app->request->post('TrOsnov')['tr_osnov_kab'] : NULL;
}
// Сохраняем модель с отправленными данными и сохраненным mattraffic
if (!$Mattraffic->isNewRecord && $model->save()) {
$transaction->commit();
return $this->redirect(Proc::GetPreviousURLBreadcrumbsFromSession());
} else {
// иначе
// Берет значение сначала из справочника (посредством перехода на страницу выбора), если нет, то вытаскивает из сессии (для простого обновления страницы)
// выводит $PreviusBC - для последующей передачи в функцию Proc::SetSessionValuesFromAR, т.е. установить в последнюю сессию или предыдущую (хлебных крошек)
$PreviusBC = Proc::GetValueForFillARs($id_mattraffic, 'TrOsnov', 'id_mattraffic');
// Очистить ошибку id_mattraffic, если есть ошибка по mattraffic_number (Превышено допустимое кол-во для перемещения матер. цен-ти)
//if (isset($Mattraffic->errors['mattraffic_number']))
// $model->clearErrors('id_mattraffic');
// Если выбрана мат. цен-ть, то заполнить информацию для отображения на форме по мат. цен-ти и МОЛ
if (!empty($id_mattraffic)) {
$Material = Material::find()->joinWith('mattraffics')->where(['mattraffic_id' => $id_mattraffic])->one();
$Employee = Employee::find()->joinWith('mattraffics')->where(['mattraffic_id' => $id_mattraffic])->one();
// GetMaxNumberMattrafficForInstallAkt - Определяем максимально допустимое кол-во материала для перемещения (Общее кол-во материала минус уже перемещенное кол-во)
$mattraffic_number_max = 'Не более ' . doubleval(Mattraffic::GetMaxNumberMattrafficForInstallAkt($id_mattraffic));
// Сохраняем модель мат. цен-ти и МОЛ'а в сессию (т.к. эти модели только для отображения)
Proc::SetSessionValuesFromAR($Material, $PreviusBC);
Proc::SetSessionValuesFromAR($Employee, $PreviusBC);
}
// Откатываем транзакцию
$transaction->rollBack();
return $this->render('create', ['model' => $model, 'Mattraffic' => $Mattraffic, 'Material' => $Material, 'Employee' => $Employee, 'mattraffic_number_max' => $mattraffic_number_max]);
}
} catch (Exception $e) {
$transaction->rollBack();
throw new Exception($e->getMessage());
}
}