使用模块在Prestashop 1.7.6类别中添加自定义字段。如何在数据库中保存?

使用模块在Prestashop 1.7.6类别中添加自定义字段。如何在数据库中保存?,prestashop,prestashop-1.7,Prestashop,Prestashop 1.7,我正在Prestashop 1.7.6中创建一个模块,以便在我的类别管理页面中添加一些自定义字段。这是我的代码(来自法语,使用了新的Symfony型号): modules/categorycustomfields/categorycustomfields.php class Categorycustomfields扩展模块 { 受保护的$config_form=false; 公共函数构造() { $this->name='categorycustomfields'; $this->tab='ad

我正在Prestashop 1.7.6中创建一个模块,以便在我的类别管理页面中添加一些自定义字段。这是我的代码(来自法语,使用了新的Symfony型号):

modules/categorycustomfields/categorycustomfields.php

class Categorycustomfields扩展模块
{
受保护的$config_form=false;
公共函数构造()
{
$this->name='categorycustomfields';
$this->tab='administration';
$this->version='1.0.0';
$this->author='abc';
$this->need_instance=0;
$this->bootstrap=true;
父项::_构造();
$this->displayName=$this->l('Category Custom Fields');
$this->description=$this->l('addcustomfieldstocategory');
$this->ps\u versions\u compliance=array('min'=>'1.7','max'=>\u ps\u VERSION\ux);
}
公共函数安装()
{
如果(!parent::install()
//安装SQLDU模块
||!$this->\u installSql()
//吊钩安装
||!$this->registerHook('ActionAdminCategoriesController SaveAfter'))
||!$this->registerHook('actionAdminCategoriesFormModifier')
) {
返回false;
}
返回true;
}
公共函数hookActionCategoryFormBuilderModifier(数组$params)
{
//制表工人的简历
/**@var\Symfony\Component\Form\FormBuilder$FormBuilder*/
$formBuilder=$params['form_builder'];
//诺特尔冠军杯
$formBuilder->add('color',
\Symfony\Component\Form\Extension\Core\Type\TextType::class,
[
'label'=>this->l('Color'),//标签du champ
'required'=>false,//requires ou non
“约束”=>[//冠军合同
新建\Symfony\Component\Validator\Constraints\Length([
“最大值”=>20,
'maxMessage'=>$this->l('Max caracters allowed:20'),
]),
],
“数据”=>“//Valeur du champ
]
);
$formBuilder->setData($params['data'],$params);
}
公共函数hookActionAfterCreateCategoryFormHandler(数组$params)
{
$this->updateData($params['form_data'],$params);
}
公共函数hookActionAfterUpdateCategoryFormHandler(数组$params)
{
$this->updateData($params['form_data'],$params);
}
//参数没有很好地使用,只是作为示例
受保护的函数updateData(数组$data,$params)
{
$insertData=数组(
'id_category'=>(int)$params['id'],
'id_lang'=>(int)$this->context->language->id,
'color'=>$data['color'],
);
//更新数据库
Db::getInstance()->insert(“ps_category_lang”,$insertData);
}
}
在updateData()方法中,我获得了带有category ID和lang ID的自定义字段,并使用Db Class方法insert()更新数据库中的颜色字段(颜色字段创建得很好)

但在保存或更新时,出现以下错误:[PrestaShopDatabaseException代码0]

也许数据库方法不好?谁能告诉我如何保存这些数据


谢谢

尝试如下更新:

$query = "UPDATE `"._DB_PREFIX_."category_lang` SET color='".$data['color']."' WHERE id_category = '".(int)$params['id']."' ";
Db::getInstance()->Execute($query);

尝试如下更新:

$query = "UPDATE `"._DB_PREFIX_."category_lang` SET color='".$data['color']."' WHERE id_category = '".(int)$params['id']."' ";
Db::getInstance()->Execute($query);

我制作了这个模块,所以它可能有用

我制作了这个模块,所以它可能有用

看起来还可以,但是kiteman的解决方案更简单:)ThanksIt看起来还可以,但是kiteman的解决方案更简单:)ThanksPerfect!非常感谢。完美的非常感谢。谢谢,但是你的模块是给客户的,他要求分类。谢谢,但是你的模块是给客户的,他要求分类。