我的prestashop模块返回一些错误消息,我得到更多关于解决此错误的问题,我想为此错误添加一些提示。 当将新产品插入数据库时,此代码行返回错误消息,例如“name is empty”
`$lang_field_error = $productObj->validateFieldsLang(self::UNFRIENDLY_ERROR, true)`
我显示errror msg看起来像这样
$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;
}
并返回错误消息以显示, 例如,如果错误消息是“名称字段为空”我想添加错误提示看起来像“你的产品名称不能为空”
我必须抓错误,(不是来自字符串)任何人都可以帮助我吗?
答案 0 :(得分:0)
在文件/classes/ObjectModel.php文件中,您将看到一个名为validateField()的函数,该函数是从您共享的代码中调用的。
您需要在此函数中添加条件以更改返回的错误。您可以添加条件以指示当前控制器是您的控制器或类似的东西。
您可以使用以下代码获取当前控制器的名称:
Tools::getValue('controller');