У меня есть настраиваемое поле (флажок) на странице администратора продукта:
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' );
}
}
}
}
Но это не помогаетхитрость.