Prestashop 的back office tab 筆記 - Part 4

由於prestashop 升級了1.5.x, 而且佢把入面基本的core 也作出了不少的改動,就連最基本的object class 也改了寫法呢, 當然舊有的寫法還是可以support的, 但新的寫法感覺上不錯而且也更易明,所以就記下新的寫法吧!可以在這裏回憶一下舊的寫法

如果嘗試睇一下ObjectModel這個class就會發現了很多東西也是 @deprecated 1.5.0呢, 其中包括了很多在筆記一所提到的變數呢
/**
 * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['table'] property instead
 */
protected $table;

/**
 * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['primary'] property instead
 */
protected $identifier;

/**
 * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['fields'] property instead
 */
protected $fieldsRequired = array();

/**
 * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['fields'] property instead
 */
protected $fieldsSize = array();

/**
 * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['fields'] property instead
 */
protected $fieldsValidate = array();

/**
 * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['fields'] property instead
 */
protected $fieldsRequiredLang = array();

/**
 * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['fields'] property instead
 */
protected $fieldsSizeLang = array();

/**
 * @deprecated 1.5.0 This property shouldn't be overloaded anymore in class, use static $definition['fields'] property instead
 */
protected $fieldsValidateLang = array();

從入面可以睇到好多的變數也改變成在definition中設,那就看看我重新寫的object class
public static $definition = array(
 'table' => 'product_fast_get_discount',
 'primary' => 'id_pfgd',
 'fields' => array(
  'id_product' =>  array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true),  
  'position' =>  array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true),     
  'reduction' =>   array('type' => self::TYPE_FLOAT, 'validate' => 'isPrice', 'required' => true),
  'reduction_type' => array('type' => self::TYPE_STRING, 'validate' => 'isReductionType', 'required' => true),
  'from' => array('type' => self::TYPE_DATE, 'validate' => 'isDateFormat', 'required' => false),
  'to' => array('type' => self::TYPE_DATE, 'validate' => 'isDateFormat', 'required' => false)  
 )
);
新的Object class, 只要設定好definition這個static 變數就可以了,因為入面的'table', 'primary', 'fields' 就已經包含了第筆記一中提到的那些設定..

除此之外,在筆記一中提到要建立的getFieldsgetTranslationsFieldsChild來到1.5+後也不用自己寫了

所以雖然1.5+的確作出了不少的改動,但感覺上在object class 的一part是改得不錯,因為整體來說佢係更加易明同整潔了呢

0 回應:

Post a Comment