Prestashop - 如何将自定义输入字段添加到产品定制并写入db

时间:2014-03-14 07:55:51

标签: php mysql smarty customization prestashop

在正式的Prestashop论坛上没有得到回应,我想我会尝试转向你们,我的第一篇文章。谢谢你的阅读。

我正在建立一个销售个性化商品的网站,我必须限制每个商品的自定义字段中输入的字符,Prestashop仍然遗漏了这个功能,所以我正在努力整合这个功能自己。

稍微修改了一下,我的前端工作得很好,使用maxlength来限制自定义输入字段中允许的字符,使用在新字段中从数据库读取的值' max_chars'在ps_customization_field中(此刻手动输入值)

但是现在我已达到了我的知识极限,而且我一直在寻找并修补我无法完成最后一点,所以希望有更多知识渊博的人比我能帮助。

基本上,在后台创建自定义字段时,我需要一个额外的输入字段,允许我为每个自定义输入max_chars,然后我需要将此值写入max_chars中的数据库ps_customization_field表的字段。

TL:DR如何在后台产品定制区域中创建新字段并将输入保存到数据库。

亲切的问候, 克里夫

3 个答案:

答案 0 :(得分:0)

关于“如何将输入保存到我的数据库”的问题过于宽泛,无法在一个答案中得到解答。查看SQL查询和PDO的工作方式,因为它们可以让您了解如何启动。

在前端中显示自定义字段可以使用Smarty进行以下操作:

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

答案 1 :(得分:0)

我认为你应该为此创建一个模块。只需创建一个向管理产品控制器添加选项卡的模块,并列出创建的所有自定义字段。然后,使用简单的id_customization =&gt;制作表单maxcharacter relationship。

您需要的最后一件事是在此模块中创建一个钩子并将其添加到保存自定义的产品前端控制器中(我认为在initContent内部)。这个钩子会进行验证,并可能通过抛出一个错误(prestashop&#39; s错误)来取消该过程。

通过这种方式,您可以为字段添加一些额外的验证,例如类型验证或其他任何内容。

如果你从未成功,你应该试试这个: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');
  [...]
}

答案 2 :(得分:0)

要显示您的输入,您需要覆盖_displayLabelField中的方法controllers/admin/AdminProdutsController.php

要更新字段,您需要覆盖updateLabels中的方法classes/Product.php

相关问题