2013-03-20 3 views
0

Я добавил раскрывающийся список в файл шаблона моего метода доставки. Теперь я хочу сделать это необходимым полем. Я пробовал так много способов. Но не сработало. Любая помощь будет оценена.Magento Как добавить обязательное поле в метод доставки?

Ниже представлен файл шаблона.

<?php 
    $_code=$this->getMethodCode(); 
    $carrier = $this->getMethodInstance(); 
    $pickupData = $this->getQuote()->getPickupData(); 
    $_rate = $this->getRate(); 
    if(!isset($pickupData['store'])) 
    { 
     $pickupData['store'] = -1; 
    } 
    if(!isset($pickupData['name'])) 
    { 
     $pickupData['name'] = ''; 
    } 
?> 
<ul class="form-list" id="shipping_form_<?php echo $_rate->getCode() ?>" style="display:none;"> 
    <li> 
     <label for="shipping_pickup[store]" class="required"><em>*</em><?php echo $this->__('Choose Store Location:') ?></label> 
     <span class="input-box" style="float:left ;"> 
      <select class="required-entry" name="shipping_pickup[store]" id="shipping_pickup[store]"> 
       <option value='0'><?php echo $this->__('Select Store..');?></option> 
       <?php 
        $collection = $this->getAllLocations(); 
        foreach($collection as $coll) 
        { 
         $data = $coll->getData(); 
         ?> 
         <option value='<?php echo $data['location_id']; ?>'><?php echo $this->__($data['location_name']);?></option> 
         <?php 
        } 
        ?> 
      </select> 
     </span> 
    </li> 
</ul> 

ответ

0

в opcheckout.js изменить строку 663 на 763.

validate: function() { 
     var methods = document.getElementsByName('shipping_method'); 

     if (methods.length==0) { 
      alert(Translator.translate('Your order cannot be completed at this time as there is no shipping methods available for it. Please make necessary changes in your shipping address.').stripTags()); 
      return false; 
     } 

     if(!this.validator.validate()) { 
      return false; 
     } 

     for (var i=0; i<methods.length; i++) { 
      if (methods[i].checked) { 

       var methodName = methods[i].value; 
       if(methodName == 'pickup_pickup') 
        { 
       var locationOpt = document.getElementById('shipping_pickup[store]'); 
       var selectedOpt = locationOpt.options[locationOpt.selectedIndex].text; 

       if(selectedOpt == 'Select Store..') 
        { 
         alert(Translator.translate('Please specify a location.').stripTags()); 
         return false; 

        } 
       else 
        { 
        return true; 
        } 
        } 
       else 
        { 
       return true; 
        } 
      } 
     } 
     alert(Translator.translate('Please specify shipping method.').stripTags()); 
     return false; 
    }, 
0

Этот код всегда будет работать, потому что всегда будет устанавливаться в массиве $ _POST, который, кажется, чтобы превратить в массив с именем $ pickupData

Вам нужно будет изменить свой код, чтобы убедиться, что $ pickupData [ 'магазин'] не является нулем

//make sure this variable is available in the array to avoid errors 
//check to make sure variable is not a zero still 
if(isset($pickupData['store']) && $pickupData['store'] == 0){ 
    $pickupData['store'] = -1; 
} 
+0

Th ank вы для вашего ответа. Это не работает. Я хочу показать предупреждение javascript, когда пользователь не выбрал хранилище и не нажал кнопку проверки. То же, что и когда пользователь не выбрал способ доставки и пытается проверить. – Sukeshini

+0

Привет, я нашел решение – Sukeshini