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
相关产品推荐
相关产品推荐

