2016-06-04 20 views
0

Wie kann ich Adresse 1 und Adresse 2 Adresse erhalten. Ich erstelle eine Erweiterung und möchte eine Adresse in Magento bekommen. Im Block habe ich diese Funktion:OUTPUGet street1 und street 2 Magento

public function updateFormData() { 
    $data = $this->getData('form_data'); 
    if (is_null($data)) { 
     /** @var array $formData */ 
     $formData = Mage::getSingleton('customer/session')->getCustomerFormData(true); 
     $order = $this->getOrder(); 
     $address = $order->getShippingAddress(); 
     $customerData = [ 
      'email' => $order->getCustomerEmail(), 
      'firstname' => $order->getCustomerFirstname(), 
      'lastname' => $order->getCustomerLastname(), 
      'city' => $order->getBillingAddress()->getCity(), 
      'country' => $order->getBillingAddress()->getCountry(), 
      'telephone' => $order->getBillingAddress()->getTelephone(), 
      'company' => $order->getBillingAddress()->getCompany(), 
     ]; 

     $data = new Varien_Object(); 
     if ($formData) { 
      $data->addData($formData); 
      $data->setCustomerData(1); 
     } 
     $data->addData($customerData); 
     if (isset($data['region_id'])) { 
      $data['region_id'] = (int)$data['region_id']; 
     } 
     $this->setData('form_data', $data); 
    } 
    return $data; 
} 

und in der phtml Datei, die ich hinzufügen, dies:

 <?php $_streetValidationClass = $this->helper('customer/address')->getAttributeValidationClass('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->escapeHtml($this->getFormData()->getStreet(1)) ?>" title="<?php echo Mage::helper('core')->quoteEscape($this->__('Street Address')) ?>" id="street_1" class="input-text <?php echo $_streetValidationClass ?>" /> 
       </div> 
      </li> 
     <?php $_streetValidationClass = trim(str_replace('required-entry', '', $_streetValidationClass)); ?> 
     <?php for ($_i = 2, $_n = $this->helper('customer/address')->getStreetLines(); $_i <= $_n; $_i++): ?> 
      <li class="wide"> 
       <div class="input-box"> 
        <input type="text" name="street[]" value="<?php echo $this->escapeHtml($this->getFormData()->getStreet($_i)) ?>" title="<?php echo Mage::helper('core')->quoteEscape($this->__('Street Address %s', $_i)) ?>" id="street_<?php echo $_i ?>" class="input-text <?php echo $_streetValidationClass ?>" /> 
       </div> 
      </li> 
     <?php endfor; ?> 

Ich versuche, diesen 'street_1' => $order->getBillingAddress()->getData('street'), aber immer Wert street_1 Adresse hinzuzufügen ist leer. Ich versuche, alle Felder auf der Seite mit dem Erfolg der Bestellung zu erhalten.

OUTPUT:

<li class="wide"> 
<label class="required" for="street_1"> 
<div class="input-box"> 
<input id="street_1" class="input-text required-entry" type="text" title="Street Address" value="address1 address2" name="street[]"> 
</div> 
</li> 
<li class="wide"> 
<div class="input-box"> 
<input id="street_2" class="input-text " type="text" title="Street Address 2" value="" name="street[]"> 
</div> 
</li> 

Antwort

2

$order->getBillingAddress()->getData('street') wird ein Array zurück.
So können Sie die Daten mit Zugang:

$billingStreet = $order->getBillingAddress()->getData('street'); 
$billingStreet1 = $billingStreet[0]; 
$billingStreet2 = $billingStreet[1]; 
$billingStreet3 = $billingStreet[2]; 

bearbeiten: Der Code oben ist die Rechnungsadresse eines Auftrags zu bekommen, was ich glaube, Sie wollen jetzt ist eigentlich die neue Adresse, die eingestellten Daten in die Form. So sollte diese Ihnen die Informationen Sie nach, so lange wie Sie es vor dem $data = new Varien_Object(); Spiel setzen:

$streetArray = $data['street']; 
$street1  = $streetArray[0]; 
$street2  = $streetArray[1]; 

so wird Ihre Funktion sein:

public function updateFormData() { 
    $data = $this->getData('form_data'); 
    if (is_null($data)) { 
     /** @var array $formData */ 
     $formData = Mage::getSingleton('customer/session')->getCustomerFormData(true); 
     $order = $this->getOrder(); 
     $address = $order->getShippingAddress(); 
     $streetArray = $data['street']; 
     $street1  = $streetArray[0]; 
     $street2  = $streetArray[1]; 
     $customerData = [ 
      'email' => $order->getCustomerEmail(), 
      'firstname' => $order->getCustomerFirstname(), 
      'lastname' => $order->getCustomerLastname(), 
      'city' => $order->getBillingAddress()->getCity(), 
      'country' => $order->getBillingAddress()->getCountry(), 
      'telephone' => $order->getBillingAddress()->getTelephone(), 
      'company' => $order->getBillingAddress()->getCompany(), 
      'street_1' => $street1, 
      'street_2' => $street2 
     ]; 

     $data = new Varien_Object(); 
     if ($formData) { 
      $data->addData($formData); 
      $data->setCustomerData(1); 
     } 
     $data->addData($customerData); 
     if (isset($data['region_id'])) { 
      $data['region_id'] = (int)$data['region_id']; 
     } 
     $this->setData('form_data', $data); 
    } 
    return $data; 
} 
+0

danke, ist die gleiche Leike vor value = "", meine ich blank – Robert

+0

@RobertD check my edit – OSdave

+0

bitte sag mir was ist das in der public function im $ customerData = []? – Robert