Мне нужно сделать поле почтового индекса, чтобы принимать ввод не менее 4 цифр. Я работаю с opencart 4 и журнальной темой.
Я попытался изменить следующую строку в /public_html/catalog/controller/checkout/shipping_address.php
if ($country_info && $country_info['postcode_required'] && (oc_strlen($this->request->post['postcode']) < 4 || oc_strlen($this->request->post['postcode']) > 10)) {
$json['error']['postcode'] = $this->language->get('error_postcode');
}
и в соответствующем каталоге\view\theme\journal3\template\checkout\shipping_address.twig
<div class = "form-group required">
<label class = "col-sm-2 control-label" for = "input-shipping-postcode">{{ entry_postcode }}</label>
<div class = "col-sm-10">
<input type = "text" name = "postcode" value = "{{ postcode }}" placeholder = "{{ entry_postcode }}" id = "input-shipping-postcode" class = "form-control" required>
</div>
</div>
Но любые модификации, которые я добавляю в контроллер, похоже, не работают даже после того, как я очистил кеш.
Сначала вам нужно проверить у администратора, что почтовый индекс требуется для всех тех стран, в которые вы осуществляете доставку. В противном случае минимальная и максимальная длина не работают. Вы можете найти этот параметр в разделе «Система» -> «Локализация» -> «Страны».
Чтобы добиться этой работы, вам нужно изменить три разных файла:
Номера строк могут отличаться, если вы используете некоторые расширения.
Вот как можно изменить файл Shipping_address.php.
if ($country_info && $country_info['postcode_required'] && (oc_strlen($this->request->post['postcode']) < 5 || oc_strlen($this->request->post['postcode']) > 10)) {
$json['error']['postcode'] = $this->language->get('error_postcode');
}
Модификация строки 312 в файле Register.php:
if ($payment_country_info && $payment_country_info['postcode_required'] && (oc_strlen($this->request->post['payment_postcode']) < 5 || oc_strlen($this->request->post['payment_postcode']) > 10)) {
$json['error']['payment_postcode'] = $this->language->get('error_postcode');
}
Модификация строки 360 в Register.php:
if ($shipping_country_info && $shipping_country_info['postcode_required'] && (oc_strlen($this->request->post['shipping_postcode']) < 5 || oc_strlen($this->request->post['shipping_postcode']) > 10)) {
$json['error']['shipping_postcode'] = $this->language->get('error_postcode');
}
Изменение строки платежа_адрес.php 126:
if ($country_info && $country_info['postcode_required'] && (oc_strlen($this->request->post['postcode']) < 5 || oc_strlen($this->request->post['postcode']) > 10)) {
$json['error']['postcode'] = $this->language->get('error_postcode');
}
Если вы хотите, чтобы минимальная длина почтового индекса составляла 4 цифры, вам необходимо заменить исходное число два на 5. И не забудьте обновить языковые файлы, чтобы они соответствовали минимальной длине почтового индекса.
@ashy Никаких проблем. Я разрабатываю расширение для версии OC 4.1.0.0, в котором длину почтового индекса и разрешенных символов можно регулировать непосредственно из панели администратора для каждой страны и зоны. Однако я жду, пока Дэниел выпустит официальную версию, чтобы я мог использовать OCMOD для расширения. Я свяжу это с вами, когда оно будет готово.
Замечательно! Спасибо!
Большое спасибо, я не знал, что мне тоже нужно сделать почтовый индекс обязательным в панели администратора.