Jump to content

Problema con añadir campo en la ficha del producto (Backoffice) en Prestashop 1.7


Recommended Posts

Buenas, quiero añadir un nuevo checkbox en la ficha del producto que se llamará producto_descatalogado en Prestashop 1.7.8.3

Mi problema es que cuando marco el checkbox y le doy a guardar no aparece ningún error, pero cuando vuelvo a refrescar la ficha del producto, se desmarca el checkbox y en la base de datos no cambia el valor a 1.


He visto varios tutoriales pero no encuentro la solución, ya que son bastante antiguos.
Estos son los pasos que he seguido, adjunto capturas para ver si se puede encontrar una solución.


1.- Añadir campo en la base de datos

image.png.7582e875e6eabde06cbab7322bef3ea4.png

 

2.- Creo el archivo product.php en override/classes/Product.php

 

<?php

public $producto_descatalogado ; 
public function __construct ( $id_product = null , $full = false , $id_lang = null , $id_shop = null , Context $context = null ) { 
    
    self::$definition['fields']['producto_descatalogado'] = array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool');
}
    ?>

 

3.- Añado las siguientes lineas en src/PrestaShopBundle/Form/Admin/Product/ProductInformation.php

  ->add('producto_descatalogado', FormType\CheckboxType::class, [
                'label' => $this->translator->trans('producto descatalogado', [], 'Admin.Global'),
                'required' => false,
            ])

 

4.-  Añado las siguientes lineas en src/PrestaShopBundle/Model/Product/AdminModelAdapter.php:

   private $multiShopKeys = [
    [...]
        'producto_descatalogado',
    ];

 

 private $translatableKeys = [
     [...]
        'producto_descatalogado',
    ];

 

 private $unmapKeys = [
    [...]
        'producto_descatalogado',
    ];

 

   private function mapStep1FromData(Product $product)
    {
       [...]
            'producto_descatalogado' => $product->producto_descatalogado== 0 ? false : true,
            
        ];
    }

 5.- Añado las siguientes líneas en 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', {
             [...]
              'formDescatalogado': form.step1.producto_descatalogado,
            })
          }}
        {% endblock %}

6. Añado las siguientes líneas src/PrestaShopBundle/Resources/views/Admin/Product/ProductPage/Panels/essentials.html.twig 

  <div class="form-group mb-4">
      <h2>Descatalogado</h2>
      {{ form_widget(formDescatalogado) }} 
    </div>

Adjunto captura de la ficha del producto con el checkbox

 

image.png.3c1cbc9e9fddef1482356f50ac0a3ff8.png

 

Eso es todo, gracias.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...