当前位置: 首页 > 知识库问答 >
问题:

prestashop添加错误分析提示

巫马泰
2023-03-14

我的prestashop模块返回一些错误消息,我得到更多关于解决这个错误的问题,我想为这个错误添加一些提示。

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

我显示错误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-

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

并返回error msg以显示,例如,如果error msg为“name字段为空”,我希望添加类似“you products name不能为空”的错误提示

我必须抓住错误种类,(不是从字符串)有人能帮我吗?

共有1个答案

弓磊
2023-03-14

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

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

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

Tools::getValue('controller');
 类似资料:
  • 我尝试添加外部css,但不是work属性, 我正在使用prestashop版本1.7。4.3 在install()函数中,我调用钩子 在钩子里面,我注册了css和js文件 在hookBackOfficeHeader()中,我没有任何问题,但在hookDisplayHeader()中,我不想注册字体。 我尝试使用registerStylesheet()来添加CSS(),但根本不起作用。 为什么这两种

  • 功能介绍 获取错误分析报告数据,包括表格详情数据与趋势数据,所获取数据与 https://mtj.baidu.com 中报告数据一致 接口 https://openapi.baidu.com/rest/2.0/mtj/svc/app/getDataByKey 此处仅列本接口特有参数,公共参数请参考报告级API说明 获取错误概况表格数据 参数名 参数类型 是否必须 描述 method string

  • 错误分析 一、错误概况,一目了然 错误概况是以错误类型为维度的分析报表,让开发者能够一目了然地掌握自己应用的错误概要信息。基础指标包括:错误次数(日均)、影响用户数(日均)、错误率、影响用户占比。并且通过趋势图展示四个指标的分日趋势变化。 通常来讲,应用的某一次具体的错误堆栈信息称作“错误详情”,但是很多错误详情拥有相同的摘要信息(通常为堆栈信息的前三句),而不同的错误摘要同样可以聚合成同一个错误

  • 你好,堆栈溢出社区。 我有一个问题的产品页面在我的prestashop后端办公室。我会在附件截图上显示一切。 例如:我尝试添加新产品:-我无法从标准产品切换到具有组合的产品-要选择的类别显示不正确-brutto价格计算不正确-没有供应商可供选择 尝试添加新产品时的控制台日志: 我已经尝试过:-在互联网上进行了大量搜索,但我没有找到解决方案(除了类似的未解决问题)-将admin文件夹覆盖到原始文件夹

  • 我正在尝试用discord4j构建一个discordbot。我将这行代码添加到build.gradle文件中。 然而,在我尝试构建应用程序后,构建在task < code >:app:checkdebugduplicateclass 处失败。 我注意到模块不和不中有一个重复的类。搜索解决方案后,我找到了这个答案: 有时,重复类异常意味着某个依赖项隐式使用了项目中使用的某个库的较旧或较新版本, 但是

  • 我正在为Prestashop编写一个模块,该模块覆盖AdminProductsController,并向BackOffice产品视图中的批量操作菜单中添加另外两个操作。这是我在重写类的构造中添加批量操作的代码 结果是这样的 我想在“删除选定项”和“导出选定项”之间添加分隔符。我的意思是,在我新添加的条目之前添加它。我怎样才能做到这一点?