Andry
Andry

Reputation: 67

Override not working on prestashop 1.7 Category class

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

Answers (1)

sadlyblue
sadlyblue

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

Related Questions