2016-06-13 12 views
-1

私は、外部ウェブサービスを通じて得られたキャリアを追加するモジュールを作成しました。データベースへのADDICTIONは正しく行われ、phpmyadminにはキャリアが作成されています。 ただし、画面のキャリアはキャリアが設置示すと次の行のエラーを印刷しない:運送業者のエラーを表示

Warning: strip_tags() expects parameter 1 to be string, array given in C:\xampp\htdocs\prestashop\classes\db\Db.php on line 815

完全なメソッドのコードは次のとおりです。

public function installCarriers() 
    {   
     $id_lang_default = Language::getIsoById(Configuration::get('PS_LANG_DEFAULT')); 
     $envios = Configuration::get('ENVIOS'); 
     foreach ($envios as $env) 
     {     
       $carrier = new Carrier(); 
       $carrier->name = $env->nombreModo; 
       $carrier->id_tax_rules_group = 0; 
       $carrier->active = TRUE; 
       $carrier->deleted = 0; 
       foreach (Language::getLanguages(true) as $language) 
        $carrier->delay[(int)$language['id_lang']] = $env->periodo_dia; 
       $carrier->shipping_handling = false; 
       $carrier->range_behavior = 0; 
       $carrier->is_module = true; 
       $carrier->is_free = false; 
       $carrier->shipping_external = false; 
       $carrier->external_module_name = (string)$this->name; 
       $carrier->need_range = true; 

       if ($carrier->add()) 
       { 
        // Associate carrier to all groups 
        $groups = Group::getGroups(true); 
        foreach ($groups as $group) 
         Db::getInstance()->insert('carrier_group', array('id_carrier' => (int)$carrier->id, 'id_group' => (int)$group['id_group'])); 

        // Create price range 
        $aux1 = intval($env->precioBase); 
        $aux2 = $aux1+1; 
        $rangePrice = new RangePrice(); 
        $rangePrice->id_carrier = $carrier->id; 
        $rangePrice->delimiter1 = $aux1; 
        $rangePrice->delimiter2 = $aux2; 
        $rangePrice->add(); 

        // Crear el rango de pesos para el carrier 
        $rangeWeight = new RangeWeight(); 
        $rangeWeight->id_carrier = $carrier->id; 
        $rangeWeight->delimiter1 = '0'; 
        $rangeWeight->delimiter2 = '10000'; 
        $rangeWeight->add(); 

        //Calculo del precio incluyendo el IVA (21%) 
        $priceIVA = str_replace(',', '.', $env->precioBase); 
        $priceIVA = (float)$priceIVA + (float)$priceIVA*(float)0.21; 

        // Asociar el carrier a la zona 1 = Europa 
        $zone = Zone::getIdByName('Europe'); 
        Db::getInstance()->insert('carrier_zone', array('id_carrier' => (int)$carrier->id, 'id_zone' => (int)$zone)); 
        Db::getInstance()->insert('delivery', array('id_carrier' => (int)$carrier->id, 'id_range_price' => (int)$rangePrice->id, 'id_range_weight' => (int)$rangeWeight->id, 'id_zone' => (int)$zone, 'price' => $priceIVA)); 



        // Copy the carrier logo 
        copy(dirname(__FILE__).'/views/img/'.$env->urlEmpresa, _PS_SHIP_IMG_DIR_.'/'.(int)$carrier->id.'.jpg'); 

       } 
     } 
    } 
+0

"string"変数を配列で設定しているようです。 add()関数を呼び出す前に、すべての変数をチェックしてください。 – joseantgv

答えて

0

は、あなたのオブジェクト変数(定義配列内のフィールド)をチェックマルチセレクション値を避け、文字列値の代わりに配列を渡します(array => string)。

関連する問題