2014-01-18 61 views
0

this的答案會是這樣的代碼:如何覆蓋模塊重寫類中的定義?

Product::$definition['fields']['mystock'] = array('type' => ObjectModel::TYPE_INT, 'validate' => 'isUnsignedInt'); 
    class Product extends ProductCore 
    { 
     public $mystock; 
    } 

但它不工作。

p.s.我想添加一個定義規則btw。

UPD 1.

這是一個模塊中Supplier類的我的工作覆蓋:

class Supplier extends SupplierCore 
{ 
    /** @var string Email */ 
    public $email; 

    /** 
    * @see ObjectModel::$definition 
    */ 
    public static $definition = array(
      'table' => 'supplier', 
      'primary' => 'id_supplier', 
      'multilang' => true, 
      'fields' => array(
        'name' =>         array('type' => self::TYPE_STRING, 'validate' => 'isCatalogName', 'required' => true, 'size' => 64), 
        'active' =>       array('type' => self::TYPE_BOOL), 
        'date_add' =>       array('type' => self::TYPE_DATE, 'validate' => 'isDate'), 
        'date_upd' =>       array('type' => self::TYPE_DATE, 'validate' => 'isDate'), 
        'email' =>       array('type' => self::TYPE_STRING, 'validate' => 'isEmail', 'size' => 128), 

        // Lang fields 
        'description' =>     array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'), 
        'meta_title' =>     array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 128), 
        'meta_description' =>   array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255), 
        'meta_keywords' =>     array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255), 
      ), 
    ); 

    public function __construct($id = null, $id_lang = null) 
    { 
     parent::__construct($id, $id_lang); 
    } 
} 

UPD 2.

,這是錯誤的一邊:

Supplier::$definition['fields']['email'] = array('type' => ObjectModel::TYPE_STRING, 'validate' => 'isEmail', 'required' => true, 'size' => 128); 

class Supplier extends SupplierCore 
{ 
    /** @var string Email */ 
    public $email; 

    public function __construct($id = null, $id_lang = null) 
    { 
     parent::__construct($id, $id_lang); 
    } 
} 

那麼如果可能的話如何做到這一點?

UPD 3.也許會更好某處加上它提交表單,這個檢查前:

$validation = $address->validateController(); 

      // checks address validity 
      if (count($validation) > 0) 
      { 
       foreach ($validation as $item) 
        $this->errors[] = $item; 
       $this->errors[] = Tools::displayError('The address is not correct. Please make sure all of the required fields are completed.'); 
      } 

怎麼會呢?

回答

1

我想你是把定義放在錯誤的地方。 在供應商的覆蓋類別中嘗試以下代碼:

class Supplier extends SupplierCore 
{ 
    /** @var string Email */ 
    public $email; 

    public function __construct($id = null, $id_lang = null) 
    { 
     self::$definition['fields']['email'] = array('type' => ObjectModel::TYPE_STRING, 'validate' => 'isEmail', 'required' => true, 'size' => 128); 
     parent::__construct($id, $id_lang); 
    } 
}