Reputation: 67
Why is prestashop don't save my modification into database? I've done an override on the Category.php (prestashop 1.7) class file, here is my code:
/override/classes/Category.php
class Category extends CategoryCore { /** * afficher/masquer les produits */ public $show_products = 1; public $andrana;
public function __construct($idCategory = null, $idLang = null, $idShop = null)
{
$definition = self::$definition;
$definition['fields']['show_products'] = array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true);
$definition['fields']['andrana'] = array(
'type' => self::TYPE_HTML,
'lang' => true,
'validate' => 'isCleanHtml'
);
parent::__construct($idCategory, $idLang, $idShop);
}
}
/override\controllers\admin\AdminCategoriesController.php
class AdminCategoriesController extends AdminCategoriesControllerCore {
public function renderForm()
{
$this->fields_form_override = array(
array(
'type' => 'switch',
'label' => $this->trans('Afficher les produits', array(), 'Admin.Global'),
'name' => 'show_products',
'required' => false,
'is_bool' => true,
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->trans('Enabled', array(), 'Admin.Global')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->trans('Disabled', array(), 'Admin.Global')
)
)
),
array(
'type' => 'textarea',
'label' => $this->trans('Andrana', array(), 'Admin.Global'),
'name' => 'andrana',
'autoload_rte' => true,
'lang' => true,
'hint' => $this->trans('Invalid characters:', array(), 'Admin.Notifications.Info').' <>;=#{}'
),
);
return parent::renderForm();
}
}
PS: I've added "show_products" on ps_category table and "andrana" in ps_category_lang table
Please help me :(
Upvotes: 2
Views: 2756
Reputation: 2987
change the __construct to:
public function __construct($idCategory = null, $idLang = null, $idShop = null)
{
self::$definition['fields']['show_products'] = array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'required' => true);
self::$definition['fields']['andrana'] = array(
'type' => self::TYPE_HTML,
'lang' => true,
'validate' => 'isCleanHtml'
);
parent::__construct($idCategory, $idLang, $idShop);
}
Upvotes: 3