簡體   English   中英

如何使用模塊和掛鈎將自定義產品字段添加到prestashop

[英]How to add custom product fields to prestashop using a module and hooks

我需要在prestashop產品中添加一些字段(HSN代碼和另外一個)。 我是prestashop的新手,並沒有指導與最新版本1.7做同樣的事情。

我已經跟蹤了stackoverflow上的答案,我能夠顯示表單字段但無法保存並驗證該值。 這是我使用的代碼片段(我更喜歡這個,因為它使用了鈎子)。

    use PrestaShopBundle\Form\Admin\Type\TranslateType;
    use PrestaShopBundle\Form\Admin\Type\FormattedTextareaType;
    use Symfony\Component\Form\Extension\Core\Type\TextareaType;
    use Symfony\Component\Form\Extension\Core\Type\FormType;
    public function hookDisplayAdminProductsExtra($params)
    {
        $productAdapter = $this->get('prestashop.adapter.data_provider.product');
        $product = $productAdapter->getProduct($params['id_product']);

        $formData = [
        'ebay_reference' => $product->ebay_reference,
        ];
        $formFactory = $this->get('form.factory');
        $form = $formFactory->createBuilder(FormType::class, $formData)
            ->add('ebay_reference', TranslateType::class, array(
                'required' => false,
                'label' => 'Ebay reference',
                'locales' => Language::getLanguages(),
                'hideTabs' => true,
                'required' => false
            ))
        ->getForm()
        ;
        return $this->get('twig')->render(_PS_MODULE_DIR_.'MyModule/views/display-admin-products-extra.html.twig', [
            'form' => $form->createView()
        ]) ;

    }
    public function hookActionAdminProductsControllerSaveBefore($params)
    {
        $productAdapter = $this->get('prestashop.adapter.data_provider.product');
        $product = $productAdapter->getProduct($_REQUEST['form']['id_product']);
        foreach(Language::getLanguages() as $language){
            $product->ebay_reference[ $language['id_lang'] ] = 
                $_REQUEST['form']['ebay_reference'][$language['id_lang']];
        }
        $product->save();

    }

我被困在數據保存部分。 需要以推薦的方式對其進行一些指導。 還需要建議讀取與prestashop捆綁在一起的任何模塊的代碼來幫助解決這個問題。

在產品Prestashop 1.7中添加字段

這部分代碼僅描述了如何創建具有必要字段的表單,但它不處理產品類擴展。 因此,如果您的產品類中包含所有關系的屬性(ebay_reference),一切都會有效。 所以我想你需要為產品Prestashop 1.7中的原始答案添加字段中的 /classes/Product.phpsrc/PrestaShopBundle/Model/Product/AdminModelAdapter.php實現步驟, /classes/Product.php DB添加必要的字段。

此外,如果您不想修改或覆蓋默認產品類,則可以使用id_product鍵創建自己的表以保存數據,但將數據傳播到所有產品實例可能更加困難。商店。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM