Advertisement
Guest User

Untitled

a guest
Jan 18th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.75 KB | None | 0 0
  1. public function actionImportXml(){
  2.        $model = new ImportXml();
  3.        if (Yii::$app->request->isPost) {
  4.           $model->file = UploadedFile::getInstanceByName('importFile');
  5.           $errors = [];
  6.           $updateCount =0;
  7.           $newCount =0;
  8.           $errorCount = 0;
  9.           if ($model->validate() && $models =$model->upload()) {
  10.               $items = ArrayHelper::index(Item::find()->all(), 'id');
  11.               $product = new Item();
  12.               foreach($models as $key=>$value){
  13.                   $value['master_id'] = ($value['master_id']==0)? null :$value['master_id'];
  14.                   $value['photo_album_id'] = ($value['photo_album_id']==0)? null :$value['photo_album_id'];
  15.                   $value['brand_id'] = ($value['brand_id']==0)? null :$value['brand_id'];
  16.                   $value['meta_title'] = ($value['meta_title']=='')? null :$value['meta_title'];
  17.                   $value['meta_description'] = ($value['meta_description']=='')? null :$value['meta_description'];
  18.                   $value['meta_keywords'] = ($value['meta_keywords']=='')? null :$value['meta_keywords'];
  19.                 try{
  20.                    if(array_key_exists($value['id'], $items)){ //обновление
  21.                        $product = $items[$value['id']];
  22.                        $product->attributes=$value;
  23.                        if($product->validate()){
  24.                           $product->save(false);
  25.                           $updateCount++;
  26.                       } else{
  27.                          $errorCount++;
  28.                          $str = Yii::t('admin', 'When you upgrade id ') ."= $product->id<br>";
  29.                          foreach ($model->errors as $key=>$value){
  30.                             foreach ($value as $k=>$val){
  31.                                $str .="$key: $val <br>";
  32.                             }
  33.                          }
  34.                          $errors[] = $str;
  35.                       }
  36.                    }
  37.                    else{                                       //добавление нового
  38.                       $product->attributes=$value;
  39.                       $product->id = $value['id'];
  40.                       if($product->validate()){
  41.                          $product->isNewRecord = true;
  42.                          $product->save(false);
  43.                          $newCount++;
  44.                       }
  45.                       else{
  46.                          $errorCount++;
  47.                          $str = Yii::t('admin', 'When you add ') ."$product->articul<br>";
  48.                          foreach ($product->errors as $key=>$value){
  49.                             foreach ($value as $k=>$val){
  50.                                 $str .="$key: $val <br>";
  51.                             }
  52.                          }
  53.                          $errors[] = $str;
  54.                       }
  55.                    }
  56.                 }catch (Exception $ex){
  57.                    $errorCount++;
  58.                    $message = $ex->errorInfo[2];
  59.                    $errors[] = Yii::t('admin', 'Failed to save: ') . $message;
  60.                 }
  61.              }
  62.               $product->attributes =[];
  63.           }
  64.           else{
  65.               $errorCount++;
  66.               $errors[] = Yii::t('admin', 'Error loading file'); //ошибка загрузки файла
  67.           }
  68.        }
  69.        $errorStr = '';
  70.        foreach ($errors as $value){
  71.           $errorStr .= "<p>$value</p>";
  72.        }
  73.        Yii::$app->session->setFlash('load', Yii::t('admin', "Load {newCount} products.<br> Update {updateCount} product. <br> Erorr {errorCount}.<br> {errorStr}",
  74.            ['newCount' => $newCount, 'updateCount' => $updateCount, 'errorCount' => $errorCount, 'errorStr' => $errorStr]));
  75.       $this->redirect(['index'], 301);
  76.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement