From c15a61cfc8491e1124d91e28c9e4a253e3d5a25b Mon Sep 17 00:00:00 2001 From: ebuster Date: Sat, 28 Mar 2015 15:01:23 +0300 Subject: [PATCH 1/2] Add missed Lang class using Instead of message about my error I get message about system error in error message about my error. --- modules/backend/formwidgets/FileUpload.php | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/backend/formwidgets/FileUpload.php b/modules/backend/formwidgets/FileUpload.php index 22cca21c4..6d936db2b 100644 --- a/modules/backend/formwidgets/FileUpload.php +++ b/modules/backend/formwidgets/FileUpload.php @@ -9,6 +9,7 @@ use Backend\Classes\FormField; use Backend\Classes\FormWidgetBase; use ValidationException; use Exception; +use Lang; /** * File upload field From a8bcc6aab8afe04288837256969c3a5c4c008b06 Mon Sep 17 00:00:00 2001 From: Samuel Georges Date: Mon, 30 Mar 2015 18:41:25 +1100 Subject: [PATCH 2/2] Allow pivot data to be entered when creating --- .../backend/behaviors/RelationController.php | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/modules/backend/behaviors/RelationController.php b/modules/backend/behaviors/RelationController.php index 771b8f6ac..9d5b3f199 100644 --- a/modules/backend/behaviors/RelationController.php +++ b/modules/backend/behaviors/RelationController.php @@ -1075,25 +1075,24 @@ class RelationController extends ControllerBehavior { $this->beforeAjax(); - foreach ((array) $this->foreignId as $foreignId) { + /* + * Add the checked IDs to the pivot table + */ + $foreignIds = (array) $this->foreignId; + $this->relationObject->sync($foreignIds, false); - /* - * Check for existing relation - */ - $foreignKeyName = $this->relationModel->getQualifiedKeyName(); - $existing = $this->relationObject->where($foreignKeyName, $foreignId)->count(); + /* + * Save data to models + */ + $foreignKeyName = $this->relationModel->getQualifiedKeyName(); + $hyrdatedModels = $this->relationObject->whereIn($foreignKeyName, $foreignIds)->get(); + $saveData = $this->pivotWidget->getSaveData(); - if (!$existing) { - /* - * Add related model to the parent model - */ - $saveData = $this->pivotWidget->getSaveData(); - $pivotData = array_get($saveData, 'pivot', []); - - $foreignModel = $this->relationModel->find($foreignId); - $this->relationObject->add($foreignModel, null, $pivotData); + foreach ($hyrdatedModels as $hydratedModel) { + $modelsToSave = $this->prepareModelsToSave($hydratedModel, $saveData); + foreach ($modelsToSave as $modelToSave) { + $modelToSave->save(); } - } return ['#'.$this->relationGetId('view') => $this->relationRenderView()];