Magento — Какой код для адресной строки 2?

#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?