Как получить адрес покупателя на шаге выбора способа доставки Есть решение
У меня на сайте адрес доставки запрашивается на шаге запроса контактных данных.
Мне необходимо получить название города, который покупатель ввел ранее в форму, на шаге выбора способов доставки. То есть получить address.shipping.city
Подскажите как это сделать?
8 ответов
если авторизован, то
{$addr = $wa->user('address.shipping','')}
или только город
{$addr = $wa->user('address:city.shipping','')}
получите массив, а из него уже достанете город {$addr.0.data.city}
если не авторизован, то
{$addr = $wa->session('shop/checkout')}
и смотрите что там в адресе контакта.
{$addr.contact.address|@var_dump}
Если не авторизован, то получаю:
Или еще {$addr.contact.address|wa_dump} выдал:
Как вывести значение "город" в нужном месте?
{if $wa->user()->isAuth()}
{$addr = $wa->user('address.shipping','')}
{$city = $addr.0.data.city}
{else}
{$addr = $wa->session('shop/checkout')}
{$city = $addr.contact.address.data.city}
{/if}
и в нужном месте шаблона {$city} выведет город, если он был задан(поэтому желательно делать проверку типа
{if $city}{$city}{/if}).
может есть и более элегантные способы, но искать их в пятницу вечером я не хочу.
Очень благодарен, что пытаетесь помочь...но вот тут не работает:
{$addr = $wa->session('shop/checkout')}
{$city = $addr.contact.address.data.city}
через {$city|wa_dump} получаю NULL
А вы логаут нажали? {$addr = $wa->session('shop/checkout')} - это только для новых пользователей, которые заполняют форму не будучи залогинеными.
Просто вставьте блок кода, который я написал постом выше {if}..{else}..{/if} в начало шаблона shipping.checkout.html
а сразу после него
{if !empty($city)}
город={$city}
{/if}
И если вы залогинены в админку, и у авторизованого пользователя задан город, то он выведется.
Если нажать логаут и заполнить поле город у нового юзера на шаге контактной информации, то будет выведен он.
Пы.сы. Я все нюансы издалека учесть не могу, но по логике, всё должно работать.
Все сделал, как вы написали, для залогиненных все работает, а вот для незалогиненных ничего не выводится...
Да, вчера под вечер не разглядел внимательней. Для не авторизованного тогда так:
{$addr = $wa->session('shop/checkout')}
{foreach $addr.contact.address as $key => $value name=foo}
{if $value.ext == 'shipping'}
{$city = $value.data.city}
{/if}
{/foreach}
Не хочу разбираться почему, но $addr.contact.address у вас содержит массив, индекс которого меняется, то вон 7 был, то 16. Поэтому проще всего сейчас сделать так.
Спасибо вам огромное за помощь! Теперь работает. Наплюсовал вам в карму...