2016-10-25 3 views
1

мой модуль prestashop возвращает некоторые сообщения об ошибках, и я получаю больше вопросов об устранении этих ошибок. Я хочу добавить несколько советов по этим ошибкам. когда вставка нового продукта в базу данных этой строки кода возврата ошибки, например электронном письме «имя пустое»prestashop добавить подсказки для ошибки mesage

`$lang_field_error = $productObj->validateFieldsLang(self::UNFRIENDLY_ERROR, true)` 

и я показать errror Сообщ выглядеть следующим образом

$error_tmp = ($field_error !== true ? $field_error : '') . (isset($lang_field_error) && $lang_field_error !== true ? $lang_field_error : '') . Db::getInstance()->getMsgError(); 
       if ($error_tmp != '') { 
        $this->error_msg[] = sprintf(
         Tools::displayError('Product (ID: %1$s) cannot be saved. %2$s'), 
         (isset($product['id_product']) && !empty($product['id_product'])) ? Tools::safeOutput(
          $product['id_product'] 
         ) : 'No ID', 
         $error_tmp 
        ); 
       } 

$ productObj-> validateFieldsLang() этот метод исходит из класса ObjectModel

public function validateFieldsLang($die = true, $error_return = false) 
{ 
    foreach ($this->def['fields'] as $field => $data) { 
     if (empty($data['lang'])) { 
      continue; 
     } 

     $values = $this->$field; 

     // If the object has not been loaded in multilanguage, then the value is the one for the current language of the object 
     if (!is_array($values)) { 
      $values = array($this->id_lang => $values); 
     } 

     // The value for the default must always be set, so we put an empty string if it does not exists 
     if (!isset($values[Configuration::get('PS_LANG_DEFAULT')])) { 
      $values[Configuration::get('PS_LANG_DEFAULT')] = ''; 
     } 

     foreach ($values as $id_lang => $value) { 
      if (is_array($this->update_fields) && empty($this->update_fields[$field][$id_lang])) { 
       continue; 
      } 

      $message = $this->validateField($field, $value, $id_lang); 
      if ($message !== true) { 
       if ($die) { 
        throw new PrestaShopException($message); 
       } 
       return $error_return ? $message : false; 
      } 
     } 
    } 

    return true; 
} 

и вернуть Сообща ошибку для отображения, , например, если ошибка сбще является «поле имени пустое» я хочу добавить кончик ошибки посмотреть, как «имя вы продукты не может быть пустым»

я должен отлавливать ошибки рода, (не from string) Может ли кто-нибудь мне помочь?

ответ

0

В файле /classes/ObjectModel.php вы увидите функцию с именем validateField(), которая вызывается из общего кода.

Для изменения возвращаемой ошибки необходимо добавить условия в эту функцию. Вы можете добавить условия, указывающие, что текущий контроллер - ваш контроллер или что-то подобное.

Вы можете использовать следующий код, чтобы получить имя текущего контроллера:

Tools::getValue('controller');