Вы меня не поняли.
Вы из POST получаете current_val, а не из заказа. У вас отправляется просто форма с полями и эти поля Вам нужно записать в заказ. Это первый момент. Т.к. у Вас поля добавлены через конфиг модуля магазин, то доп поля храняться в этом случае в сериализованном массиве. Сериализованный массив это массив с ключами в виде name полей и их значениями.
/**
* Действия перез записью заказа в БД
*/
public static function ormBeforeWriteShopOrder ($data) {
/**
* @var \Shop\Model\Orm\Order
*/
$order = $data['orm'];//Получаем объект заказа
$flag = $data['flag'];//флаг
if (isset($_POST['current_val'])){ //Если нужное поле пришло из запроса
$myarray = array(
'current_val' => $_POST['current_val'];
);
$order['userfields'] = serialize($myarray);
}
}
А второй момент это момент с выводом значений. Вы просто в шаблоне у себя прописали поле. А как с выводом бы с выводом значения? Его надо самостоятельно подставлять в Вашем случае. В БД всё сохранится в поле userfields. И будет в сериализованном виде. Однако в заказе (\Shop\Model\Orm\Order т.е. если заглянуть в файл /modules/shop/model/orm/order.inc.php) есть функция afterObjectLoad, которая этот сериализованный массив, рассериализовывает при первой загрузке и в распакованном виде помещает в поле userfields_arr. Его Вы и можете использовать чтобы вывести в нужное поле значение в шаблоне. Для примера в самом шаблоне сделайте после записи
<pre>{var_dump($order.userfields_arr)}</pre>