2014-01-18 32 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); 
    } 
}