微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Prestashop 1.7 管理产品页面中的自定义字段 - 保存问题

如何解决Prestashop 1.7 管理产品页面中的自定义字段 - 保存问题

我在 Prestashop 1.7 产品中添加一个自定义字段 我遗漏了一些东西,因为我无法保存新字段的值(复选框)

到现在为止做了什么:

  1. 我已将新字段添加到表 ps_product

hide_discount_table - tinyint(1) - NOT NULL

  1. override/classes/Product.PHP
    public function __construct($id_product = null,$full = false,$id_lang = null,$id_shop = null,Context $context = null)
        {
            self::$deFinition['fields']['hide_discount_table'] = array('type' => self::TYPE_BOOL,'shop' => true,'validate' => 'isBool');
        }
  1. src/PrestaShopBundle/Form/Admin/Product/Productinformation.PHP
    // LINE 238
    ->add('hidden_discount_table',FormType\CheckBoxType::class,[
        'label' => $this->translator->trans('Hide discount table',[],'Admin.Global'),'required' => false,])
  1. src/PrestaShopBundle/Model/Product/AdminModelAdapter.PHP
    private $translatableKeys = array(
        //...LINE 140
        'hidden_discount_table',);
    private $unmapKeys = array(
        //... LINE 161
        'hidden_discount_table',);
    private function mapStep1FromData(Product $product)
    {   
        return array(
            //... LINE 518
            'hide_discount_table' => $product->hide_discount_table== 0 ? false : true,);
    }
  1. src/PrestaShopBundle/Resources/views/Admin/Product/ProductPage/product.html.twig:
    {# PANEL ESSENTIALS #}
            {% block product_panel_essentials %}
              {% set formQuantityShortcut = form.step1.qty_0_shortcut is defined ? form.step1.qty_0_shortcut : null  %}
              {{ include('@Product/ProductPage/Panels/essentials.html.twig',{
                  'formPackItems': form.step1.inputPackItems,'productId': id_product,'images': form.step1.vars.value.images,'formShortDescription': form.step1.description_short,'formDescription': form.step1.description,'formManufacturer': form.step1.id_manufacturer,'formHiddendiscount': form.step1.hide_discount_table,// NEW ENTERY
                  'formFeatures': form.step1.features,'formRelatedProducts': form.step1.related_products,'is_combination_active': is_combination_active,'has_combinations': has_combinations,'formReference': form.step6.reference,'formQuantityShortcut': formQuantityShortcut,'formPriceShortcut': form.step1.price_shortcut,'formPriceShortcutTTC': form.step1.price_ttc_shortcut,'formCategories': form.step1,})
              }}
            {% endblock %}
  1. src/PrestaShopBundle/Resources/views/Admin/Product/ProductPage/Panels/essentials.html.twig(在右栏中)
    <div class="form-group mb-4">
      <h2>Additional features</h2>
      {{ form_widget(formHiddendiscount) }} 
    </div>

在前端,我可以在 product.tpl 中打印 DB 中的值

    {$product->hide_discount_table}

效果很好。

什么不起作用:

  • 保存更改 - 保存其他更改但看不到复选框

解决方法

在 override/classes/Product.php 中尝试

READ_EXTERNAL_STORAGE

并删除文件/var/cache/{your_environment}/class_index.php

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。