You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prestashop 1.7 order-detail.tpl无法读取Order对象自定义字段值

PrestaShop 订单自定义字段前端访问空白解决方案

问题根因

你当前的Order类重写逻辑存在顺序错误:你先执行了父类构造方法加载订单数据,之后才将自定义字段加入字段定义配置,重复调用父类构造也不会重新加载新增字段的数值,导致该属性值未被正确初始化。

修复步骤

1. 修正Order重写类代码

将自定义字段注册逻辑移到父类构造调用之前,删除重复的父类构造调用:

<?php
class Order extends OrderCore
{
    /**
     * @var float 订单座位总价
     */
    public $total_seat_price;

    public function __construct($id = null, $id_lang = null)
    {
        // 先注册自定义字段到表字段定义,再调用父类构造加载数据
        self::$definition['fields']['total_seat_price'] = [
            'type' => self::TYPE_FLOAT,
            'validate' => 'isFloat',
            'allow_null' => true
        ];
        parent::__construct($id, $id_lang);
    }
}

确保重写文件放在正确路径:override/classes/order/Order.php

2. 校验数据库与缓存

  • 确认ps_orders表已经新增total_seat_price字段,类型为float/decimal,对应目标订单存在实际数值
  • 清空PrestaShop全量缓存:进入后台「高级参数>性能」点击清除缓存,或直接删除var/cache/目录下所有文件

3. 校验控制器赋值逻辑

如果模板中$order.details是控制器手动组装的数组而非Order对象,需要找到订单详情控制器中组装details数组的逻辑,将total_seat_price加入字段列表,确保赋值时已将该字段值写入数组。


内容的提问来源于stack exchange,提问作者Dhara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 11:09:03