Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public function actionImportXml(){
- $model = new ImportXml();
- if (Yii::$app->request->isPost) {
- $model->file = UploadedFile::getInstanceByName('importFile');
- $errors = [];
- $updateCount =0;
- $newCount =0;
- $errorCount = 0;
- if ($model->validate() && $models =$model->upload()) {
- $items = ArrayHelper::index(Item::find()->all(), 'id');
- $product = new Item();
- foreach($models as $key=>$value){
- $value['master_id'] = ($value['master_id']==0)? null :$value['master_id'];
- $value['photo_album_id'] = ($value['photo_album_id']==0)? null :$value['photo_album_id'];
- $value['brand_id'] = ($value['brand_id']==0)? null :$value['brand_id'];
- $value['meta_title'] = ($value['meta_title']=='')? null :$value['meta_title'];
- $value['meta_description'] = ($value['meta_description']=='')? null :$value['meta_description'];
- $value['meta_keywords'] = ($value['meta_keywords']=='')? null :$value['meta_keywords'];
- try{
- if(array_key_exists($value['id'], $items)){ //обновление
- $product = $items[$value['id']];
- $product->attributes=$value;
- if($product->validate()){
- $product->save(false);
- $updateCount++;
- } else{
- $errorCount++;
- $str = Yii::t('admin', 'When you upgrade id ') ."= $product->id<br>";
- foreach ($model->errors as $key=>$value){
- foreach ($value as $k=>$val){
- $str .="$key: $val <br>";
- }
- }
- $errors[] = $str;
- }
- }
- else{ //добавление нового
- $product->attributes=$value;
- $product->id = $value['id'];
- if($product->validate()){
- $product->isNewRecord = true;
- $product->save(false);
- $newCount++;
- }
- else{
- $errorCount++;
- $str = Yii::t('admin', 'When you add ') ."$product->articul<br>";
- foreach ($product->errors as $key=>$value){
- foreach ($value as $k=>$val){
- $str .="$key: $val <br>";
- }
- }
- $errors[] = $str;
- }
- }
- }catch (Exception $ex){
- $errorCount++;
- $message = $ex->errorInfo[2];
- $errors[] = Yii::t('admin', 'Failed to save: ') . $message;
- }
- }
- $product->attributes =[];
- }
- else{
- $errorCount++;
- $errors[] = Yii::t('admin', 'Error loading file'); //ошибка загрузки файла
- }
- }
- $errorStr = '';
- foreach ($errors as $value){
- $errorStr .= "<p>$value</p>";
- }
- Yii::$app->session->setFlash('load', Yii::t('admin', "Load {newCount} products.<br> Update {updateCount} product. <br> Erorr {errorCount}.<br> {errorStr}",
- ['newCount' => $newCount, 'updateCount' => $updateCount, 'errorCount' => $errorCount, 'errorStr' => $errorStr]));
- $this->redirect(['index'], 301);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement