prestashop添加错误消息的提示

时间:2016-10-25 09:38:48

标签: php prestashop

我的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;
}

并返回错误消息以显示, 例如,如果错误消息是“名称字段为空”我想添加错误提示看起来像“你的产品名称不能为空”

我必须抓错误,(不是来自字符串)任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

在文件/classes/ObjectModel.php文件中,您将看到一个名为validateField()的函数,该函数是从您共享的代码中调用的。

您需要在此函数中添加条件以更改返回的错误。您可以添加条件以指示当前控制器是您的控制器或类似的东西。

您可以使用以下代码获取当前控制器的名称:

Tools::getValue('controller');