#magento
#magento
Вопрос:
По какой-то причине вторая адресная строка отсутствует в моем магазине Magento, но я заметил, что она активна в других магазинах. Может кто-нибудь, пожалуйста, скопировать и вставить то, что у них есть для их 2-й адресной строки, в следующие файлы:
- template/customer/address/edit.phtml
- template/оформить заказ /onepage/shipping.phtml
- template/оформить заказ /onepage/billing.phtml
Ниже приведен пример того, что у меня есть для первой строки street, но мне нужно добавить во вторую строку street. Кроме того, нужно ли что-нибудь изменить, чтобы это заработало? Я подозреваю, что основная функциональность все еще существует, она просто не отображается во внешнем интерфейсе.
<li class="wide">
<label for="street_1" class="required"><em>*</em><?php echo $this->__('Street Address') ?></label>
<div class="input-box">
<input type="text" name="street[]" value="<?php echo $this->htmlEscape($this->getAddress()->getStreet(1)) ?>" title="<?php echo $this->__('Street Address') ?>" id="street_1" class="input-text required-entry" />
</div>
</li>
Комментарии:
1. Примечание: при использовании
$this->getAddress->getData()
в цикле foreach он возвращает ключ,street
которыйstreet1
был объединен с,street2
еслиstreet2
он существует.
Ответ №1:
Пробовал починить его с помощью правильной настройки?
Конфигурация системы -> Клиенты -> Конфигурация клиента -> Параметры имени и адреса
Измените количество строк в Уличном адресе
Если ваш шаблон соответствует лучшим практикам, то он проверяет эту конфигурацию, чтобы узнать, сколько адресных строк следует включить в шаблоны и базу данных.
Комментарии:
1. Пример кода Ника не показывает необходимую часть, которая сразу следует за ним. Следующая строка должна быть проверена
$this->helper('customer/address')->getStreetLines()
. Если это все еще присутствует, то ваш ответ будет работать.2. @clockworkgeek — Файлы, которые я использовал, были из базового каталога, так что эта строка действительно существовала в форме
for
цикла. Кроме того, значение Number of Lines в уличном адресе, предложенное Fiasco Labs, было установлено равным 2. Несмотря на это, на веб-сайте отображалась только одна адресная строка.
Ответ №2:
Просто используйте один из них, чтобы получить все строки улиц сразу:
$this->getAddress->getData('street');
$this->getAddress()->getStreetFull();
$this->getAddress()->getStreet(-1);
Комментарии:
1. Извините, я должен уточнить. Проблема в том, что поле ввода HTML не отображалось на странице. Я смог отобразить ее, добавив под ней другое поле ввода текста с аналогичными параметрами, но я хотел подтвердить правильность моего кода.
2. Никаких проблем. Рад слышать, что у вас все запущено ^^
3. $this-> getAddress()->getStreet(-1); Сделал свое дело. Ткс кучами!
Ответ №3:
Если у вас есть доступ к объекту address, вы можете легко получить каждую строку street с помощью:
$address->getStreet(1);
$address->getStreet(2);
Комментарии:
1. На случай, если это кому-то поможет, это должно быть $address-> getStreet(0); $address-> getStreet(1); поскольку они проиндексированы с нулевым индексом
2. @NatachaBeaugeais, Праттски прав — они действительно проиндексированы на 1, по крайней мере, начиная с Magento 1.7 и выше. Проверьте Mage_Customer_Model_Address_Abstract::getStreet() .
3. в версии 1.9 они также проиндексированы на 1. $address->getStreet(0) возвращает весь массив.
4. Как мы можем установить его из addressFactory?