php Prestashop -如何将自定义输入字段添加到产品自定义并写入数据库

krcsximq  于 2022-12-10  发布在  PHP
关注(0)|答案(3)|浏览(286)

在官方Prestashop论坛上没有得到任何回应,我想我会尝试转向你们,我的第一篇文章。谢谢阅读。
我正在建立一个销售个性化物品的网站,我可以限制每个物品的自定义字段中输入的字符,这是至关重要的,这是Prestashop中仍然缺少的一个功能,所以我正在努力将这个功能纳入自己的网站。
经过一点修改,我使前端工作得很好,使用maxlength限制自定义输入字段中允许的字符数,使用从数据库中读取的值在ps_customization_field的新字段'max_chars'中(此时手动输入值)
但现在我已经达到了我知识的极限,尽管我四处寻找和修补,但我不能完成最后一点,所以希望有人比我更有知识可以帮助。
基本上,当在后台创建定制字段时,我需要一个额外的输入字段,允许我为每个定制输入max_chars,然后我需要将此值写入数据库的ps_customization_field表的max_chars字段中。
TL:DR如何在后台产品定制区域创建新字段并将输入保存到数据库中?
谨致问候克莱夫

rjjhvcjd

rjjhvcjd1#

您的问题“如何将输入保存到我的数据库”太宽泛了,无法用一个答案来回答。请查阅SQL查询和PDO的工作原理,它们可能会给予您一个如何开始的想法。
在前端显示您的自定义字段可以通过Smarty完成如下操作:

{foreach $inputfields as $field}
   <input type="{$field.type}" name="{$field.name}" maxlength="{$field.maxlength}">
{/foreach}
o2g1uqev

o2g1uqev2#

我认为你应该为此创建一个模块。简单地创建一个模块,在管理产品控制器中添加一个标签,并列出所有创建的自定义字段。然后,用一个简单的id_customization =〉maxcharacter关系创建一个表单。
最后你需要在这个模块中创建一个钩子,并将其添加到保存定制的产品前端控制器中(我想是在initContent中)。这个钩子将进行验证,并可能通过抛出一个错误(当然是prestashop的错误)来取消这个过程。
这样,您就可以为字段添加一些额外的验证,比如类型验证或其他任何验证。
如果你从来没有成功过,你应该试试这个:create a module
以下是一些额外的线索:
额外产品标签挂钩:

$this->registerHook('displayAdminProductsExtra')

创建验证挂接:

$this->registerHook('CFvalidation')

处理:

public function hookCFvalidation($param)
{
  //Validate the customized values in the $_POST
  //return formated errors if any or nothing if it's valid
}

将其添加到覆盖的产品控制器中:

[...]
if (Tools::isSubmit('submitCustomizedDatas'))
{
  $this->errors[] = Hook::exec('CFvalidation');
  [...]
}
1zmg4dgp

1zmg4dgp3#

要显示您的输入,您需要覆盖controllers/admin/AdminProdutsController.php中的方法_displayLabelField
要更新字段,您需要覆盖classes/Product.php中的方法updateLabels

相关问题