Cómo guardar y mostrar un valor de campo de formulario personalizado usando el gancho de PrestaShop

En este blog, aprenderemos cómo guardar el campo del formulario personalizado y mostrar el valor actualizado en la página del producto usando el gancho de PrestaShop. Entonces, definiremos el gancho dado de PrestaShop.
Espero que ya sepas cómo agregar un campo de formulario personalizado en la página del producto PrestaShop usando el gancho. Si es nuevo en esto, lea nuestro blog anterior. Por favor haga clic aquí.

Sigamos con nuestro tema,

Paso 1: Registre el gancho proporcionado por PrestaShop para guardar el producto, es decir “acciónProductoGuardar” en la función de instalación de la siguiente manera

 public function install()
    {
        return parent::install() && $this->registerHook(['actionProductFormBuilderModifier']) && $this->registerHook(['actionProductSave']);
    }

Paso 2: Defina el gancho y realice operaciones de guardado para productos particulares.

    

    /**
     * Modify product form builder
     *
     * @param array $params
     */
    public function hookActionProductFormBuilderModifier(array $params): void
    {
        /** @var ProductFormModifier $productFormModifier */
        $productFormModifier = $this->get(ProductFormModifier::class);
        $productId = isset($params['id']) ? new ProductId((int) $params['id']) : null;
        $productFormModifier->modify($productId, $params['form_builder']);
    }

    /**
     * Modify product form builder
     *
     * @param array $params
     */
    public function hookActionProductSave(array $params): void
    {
        // Please write your logic and operation and save the data as per your need
        // We are using configuration table to save the data
        $productData = Tools::getValue('product');
        $demoPrice = $productData['pricing']['demo_module_pricing_field'];
        $demoSEOText = $productData['seo']['demo_module_custom_field'];
        $idWkProduct = $params['id_product'];
        Configuration::updateValue('wk_price_data_' . $idWkProduct, $demoPrice);
        Configuration::updateValue('wk_seo_data_' . $idWkProduct, $demoSEOText);
    }

Para guardar los datos de los Productos, puede utilizar su propia tabla definida o puede actuar utilizando datos de entrada como enviar el correo electrónico o cualquier otra cosa. Hemos guardado los datos en la tabla de configuración, por ejemplo únicamente.

Paso 3: Puede mostrar esos valores guardados estableciendo los valores en la función modificar() del Modificador de formulario de producto clase.

<nombre-módulo>/src/Form/Modifier/ProductFormModifier.php

    /**
     * @param ProductId|null $productId
     * @param FormBuilderInterface $productFormBuilder
     */
    public function modify(
        ?ProductId $productId,
        FormBuilderInterface $productFormBuilder
    ): void {
        $idWkProduct = $productId->getValue();
        $data['seo'] = Configuration::get('wk_seo_data_' . $idWkProduct);
        $data['price'] = Configuration::get('wk_price_data_' . $idWkProduct);
        $this->modifyDescriptionTab($data, $productFormBuilder);
    }

Obtendrá el resultado de la siguiente manera después de guardar el campo del formulario personalizado.

guardar el campo de formulario personalizado de la pestaña SEO

Eso es todo.

Si tiene algún problema o duda en el proceso anterior, no dude en contactarnos en la sección de comentarios.

Me gustaría ayudar.

Además, puede explorar nuestros Servicios de desarrollo PrestaShop y una amplia gama de módulos PrestaShop de calidad.


Source link

About David Lopez

Informático y experto en redes. Redactor en varios blogs tecnológicos desde hace 4 años y ahora en Steamachine.net

Check Also

R vs Python para ciencia de datos en 2022

Si es un principiante en el campo de la ciencia de datos y el aprendizaje …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *