Доброго времени, помоги разобраться с такой проблемой, хочу вывести поля shipping_custom_field (это кастомные настраиваемые поля доставки) в файле order_invoice.tpl (это файл который для печати внутри заказа)... В общем все просто, у нас есть контроллер который отвечает за весь ордер, он же - order.php, внутри есть функция invoice() которая отвечает за обработку всего что происходит в файле order_invoice.tpl, добавил нужные поля в order.php в нужную функцию invoice() таким образом: PHP: 'payment_custom_field' => $order_info['payment_custom_field'],'shipping_custom_field' => $order_info['shipping_custom_field'], Вывод делаю внутри файла order_invoice.tpl таким образом: PHP: <?php foreach ($order['shipping_custom_field'] as $custom_field) { ?><?php echo $custom_field['value']; ?><?php } ?> Таким образом все работает, но постоянно получаю ошибку в логах: Illegal string offset 'value', а если кастомное поле не заполнено, то есть не имеет значения, то при запросе в логах пишет Uninitialized string offset: 0. Все ругаются на строчку: <?php echo $custom_field['value']; ?> Делал проверку с помощь isset никакого корректного результату нету, ничего не генерируется и не отображаеться. Нашел в на стековерфлоу похожий вариант решения данной задачи, все сделал как там описано но ничего так и не завелось....
Ну, судя по ошибке у вас в $custom_field строка. Проверьте, что у вас в массиве $order['shipping_custom_field'] (и массив ли это вообще).
Все отлично работает в файле order_info.tpl таким же образом... PHP: <?php foreach ($shipping_custom_fields as $custom_field) { ?><tr data-sort="<?php echo $custom_field['sort_order'] + 1; ?>"><td><?php echo $custom_field['name']; ?>:</td><td><?php echo $custom_field['value']; ?></td> </tr>
вы как-то не внимательно смотрите info() Код: $data['shipping_custom_fields'] = array(); foreach ($custom_fields as $custom_field) { if ($custom_field['location'] == 'address' && isset($order_info['shipping_custom_field'][$custom_field['custom_field_id']])) { if ($custom_field['type'] == 'select' || $custom_field['type'] == 'radio') { $custom_field_value_info = $this->model_customer_custom_field->getCustomFieldValue($order_info['shipping_custom_field'][$custom_field['custom_field_id']]); if ($custom_field_value_info) { $data['shipping_custom_fields'][] = array( 'name' => $custom_field['name'], 'value' => $custom_field_value_info['name'], 'sort_order' => $custom_field['sort_order'] ); } } if ($custom_field['type'] == 'checkbox' && is_array($order_info['shipping_custom_field'][$custom_field['custom_field_id']])) { foreach ($order_info['shipping_custom_field'][$custom_field['custom_field_id']] as $custom_field_value_id) { $custom_field_value_info = $this->model_customer_custom_field->getCustomFieldValue($custom_field_value_id); if ($custom_field_value_info) { $data['shipping_custom_fields'][] = array( 'name' => $custom_field['name'], 'value' => $custom_field_value_info['name'], 'sort_order' => $custom_field['sort_order'] ); } } } if ($custom_field['type'] == 'text' || $custom_field['type'] == 'textarea' || $custom_field['type'] == 'file' || $custom_field['type'] == 'date' || $custom_field['type'] == 'datetime' || $custom_field['type'] == 'time') { $data['shipping_custom_fields'][] = array( 'name' => $custom_field['name'], 'value' => $order_info['shipping_custom_field'][$custom_field['custom_field_id']], 'sort_order' => $custom_field['sort_order'] ); } if ($custom_field['type'] == 'file') { $upload_info = $this->model_tool_upload->getUploadByCode($order_info['shipping_custom_field'][$custom_field['custom_field_id']]); if ($upload_info) { $data['shipping_custom_fields'][] = array( 'name' => $custom_field['name'], 'value' => $upload_info['name'], 'sort_order' => $custom_field['sort_order'] ); } } } } Видите какой код? а что в инвойсе там не только нужно получить но и подготовить в нужном формате