Используйте флажок для настраиваемого поля на странице продукта администратора - PrestaShop 1.6 - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть настраиваемое поле (флажок) на странице администратора продукта:

Informations.tpl:

    <div class="form-group">
    <div class="col-lg-1">
        <span class="pull-right">{include file="controllers/products/multishop/checkbox.tpl" field="is_exclusive" type="checkbox" multilang="false"}</span></div>
    <label class="control-label col-lg-2" for="is_exclusive">
        <span class="label-tooltip" data-toggle="tooltip" title="{l s='Is Exclusive'}">
            {l s='Is Exclusive ?'}
        </span>
    </label>
    <div class="col-lg-9">
        <input class="admin-form-check form-control" type="checkbox" id="is_exclusive" name="is_exclusive" value="1" {if $product->is_exclusive}checked{/if}/>
    </div>
</div>

И я добавил его в override/classes/Product.php:

public $is_exclusive = false;
    function __construct( $id_product = null, $full = false, $id_lang = null, $id_shop = null, Context $context = null ) {
         Product::$definition['fields']['is_exclusive'] = 
                array('type' => self::TYPE_BOOL, 'lang' => false, 'validate' => 'isBool');

Мне нужен способ отловить, когда флажок снят, и присвоить этому полю значение 0.

Я создал override/controllers/admin/AdminProductsController.php:

class AdminProductsController extends AdminProductsControllerCore {
    protected function copyFromPost(&$object, $table) {
        if ( $this->isTabSubmitted( 'Informations' ) ) {
            if ( $this->checkMultishopBox( 'is_exclusive', $this->context ) ) {
                $object->is_exclusive = (int) Tools::getValue( 'is_exclusive' );
            }

        }
    }
}

Но это не помогаетхитрость.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Да в Prestashopp 1.6 => Решение состоит в том, чтобы удалить файл кэша: cache/class_index.php В prestashop 1.7 => Решение состоит в том, чтобы удалить файл кэша: var/cache/class_index.php

С уважением

0 голосов
/ 12 февраля 2019

Решение состоит в том, чтобы удалить файл кэша: cache/class_index.php.

...