2016-05-19 2 views
-1

J'ai créé une méthode personnalisée nommée "getProductbySku" dans un modèle php.Opencart ne trouve pas de méthode personnalisée dans le modèle

/admin/model/catalog/product.php

public function getProductbySku($sku) { 
     $query = $this->db->query("select id from " . DB_PREFIX . "product where sku = '".$sku."'"); 
     if($query->num_rows){ 
      return $query->row['product_id']; 
     }else{ 
      return false; 
     } 
    } 

/admin/controller/module/syncproduct.php

$this->load->model("catalog/product"); 
print_r(get_class_methods($this->model_catalog_product)); 
$product_id = $this->model_catalog_product->getProductbySku($row['sku']); 
       if($product_id){ 
... 

et je ne peux pas appeler ma méthode .

Erreur fatale: Appel à la méthode non définie ModelCatalogProduct :: getProductbySku() dans public_html/admin/contrôleur/module/syncproduct.php en ligne 204

Array 
(
    [0] => addProduct 
    [1] => editProduct 
    [2] => copyProduct 
    [3] => deleteProduct 
    [4] => getProduct 
    [5] => getProducts 
    [6] => getProductsByCategoryId 
    [7] => getProductDescriptions 
    [8] => getProductCategories 
    [9] => getProductFilters 
    [10] => getProductAttributes 
    [11] => getProductOptions 
    [12] => getProductOptionValue 
    [13] => getProductImages 
    [14] => getProductDiscounts 
    [15] => getProductSpecials 
    [16] => getProductRewards 
    [17] => getProductDownloads 
    [18] => getProductStores 
    [19] => getProductLayouts 
    [20] => getProductRelated 
    [21] => getRecurrings 
    [22] => getTotalProducts 
    [23] => getTotalProductsByTaxClassId 
    [24] => getTotalProductsByStockStatusId 
    [25] => getTotalProductsByWeightClassId 
    [26] => getTotalProductsByLengthClassId 
    [27] => getTotalProductsByDownloadId 
    [28] => getTotalProductsByManufacturerId 
    [29] => getTotalProductsByAttributeId 
    [30] => getTotalProductsByOptionId 
    [31] => getTotalProductsByProfileId 
    [32] => getTotalProductsByLayoutId 
    [33] => __construct 
    [34] => __get 
    [35] => __set 
) 

, j'ajouté "echo $ file" pour/système/moteur/loader.php

public function model($model, $data = array()) { 
    // $this->event->trigger('pre.model.' . str_replace('/', '.', (string)$model), $data); 
    $model = str_replace('../', '', (string)$model); 
    $file = DIR_APPLICATION . 'model/' . $model . '.php'; 
    echo $file; 
... 

Rien n'a changé ... la version Opencart est 2.1.0.1

+0

Avez-vous essayé d'exécuter composer dump-autoload? –

+1

Veuillez vérifier que la fonction 'getProductbySku' est écrite dans la classe. –

+0

bien sûr 'getProductbySku' dans la classe ModelCatalogProduct – levye

Répondre

0

ce fichier est le modèle catalogue Ecraser/produit system/modification/admin/model/catalog/product.php