2015-08-15 1 views
0

Я пытаюсь выяснить проблему с неопределенной ошибкой индекса при сохранении или редактировании продукта.Opencart 2.x Неопределенный индекс product.php

Я создал новую запись в таблице продуктов в базе данных под названием disable_cart, который установлен в INT (1) и имеет значение по умолчанию 0.

На product_form.tpl это просто флажок.

<div class="col-sm-10"> 
       <div class="checkbox"> 
       <label> 
        <?php if ($disable_cart) { ?> 
        <input type="checkbox" name="disable_cart" value="1" checked="checked" id="input-disable_cart" /> 
        <?php } else { ?> 
        <input type="checkbox" name="disable_cart" value="1" id="input-disable_cart" /> 
        <?php } ?> 
        &nbsp; </label> 
       </div> 
      </div> 

Код в контроллере продукта

if (isset($this->request->post['disable_cart'])) { 
     $data['disable_cart'] = $this->request->post['disable_cart']; 
    } elseif (!empty($product_info['disable_cart'])) { 
     $data['disable_cart'] = $product_info['disable_cart']; 
    } else { 
     $data['disable_cart'] = 0; 
    } 

И модель в функции addProduct()

public function addProduct($data) { 
    $this->event->trigger('pre.admin.product.add', $data); 

    . "', disable_cart = '" . (int)$data['disable_cart'] . "', date_added = NOW()"); 

же в функции editProduct(). Он отлично работает на моем локальном хосте, но работает только на сервере Dev, если помечен в противном случае я получаю следующее сообщение об ошибке

Undefined index: disable_cart in /admin/model/catalog/product.php on line 134Warning: Cannot modify header information - headers already sent by (output started at /admin/index.php:80) in /system/library/response.php on line 12 

не может понять этот вопрос, любая помощь очень ценится.

Благодаря

редактирования: Значение имеет сохранение в БД, но он по-прежнему бросает ошибку

ответ

0

Ваша проблема связана с тем, что непроверенный Checkbox не будет отправлен через post

  1. Таким образом, нет post['disable_cart'].
  2. Когда вы размещаете новый продукт или внести изменение, эта часть кода называется:

    if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { 
         $this->model_catalog_product->addProduct($this->request->post); 
    

$data['disable_cart'] не была определена на всех. поэтому функция addProduct вызовет исключение.

Решение является, чтобы добавить эту строку кода:

if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validateForm()) { 
    // add this line to `add` and to `edit` 
    if(!isset($this->request->post['disable_cart'])) $this->request->post['disable_cart'] = 0; 

    $this->model_catalog_product->addProduct($this->request->post); 
... 

Что касается предупреждения, то просто сказать, что у вас есть преждевременный выход из-за ошибки броска.

+0

Привет и благодарность за ответ, Я должен был разместить полный код, этот код находится в функции getForm(), которая вызывается в функции add() и edit() $ this-> getForm(); – TwistedPixel88

+0

Я сделал много предположений относительно вашего кода, и я сожалею об этом. 1/Не могли бы вы показать мне, что такое строка 134? 2/Это ту же ошибку при добавлении и при редактировании (в той же строке) ?. 3/Используете ли вы механизм модификации ('vqMod' или' ocMod')? –

+0

Не нужно извиняться, я ценю вашу помощь. 1) является функцией editProduct() '' ', disable_cart =' ". (int) $ data ['disable_cart'].«», ' 2) Да, это не работает либо добавить или изменить 3) Нет, это непосредственно в относительных файлах Как я сказал, что это прекрасно работает на моем локальном хосте, но бросает ошибку на сервере разработки (Но по-прежнему сохраняет значение). – TwistedPixel88

 Смежные вопросы

  • Нет связанных вопросов^_^