Требовать 4-значный почтовый индекс

Мне нужно сделать поле почтового индекса, чтобы принимать ввод не менее 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>

Но любые модификации, которые я добавляю в контроллер, похоже, не работают даже после того, как я очистил кеш.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала вам нужно проверить у администратора, что почтовый индекс требуется для всех тех стран, в которые вы осуществляете доставку. В противном случае минимальная и максимальная длина не работают. Вы можете найти этот параметр в разделе «Система» -> «Локализация» -> «Страны».

Чтобы добиться этой работы, вам нужно изменить три разных файла:

  • /catalog/controller/checkout/shipping_address.php (строка 137)
  • /catalog/controller/checkout/register.php (строки 312 и 360)
  • /catalog/controller/checkout/pay_address.php (строка 126)

Номера строк могут отличаться, если вы используете некоторые расширения.

Вот как можно изменить файл 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 09.07.2024 09:08

@ashy Никаких проблем. Я разрабатываю расширение для версии OC 4.1.0.0, в котором длину почтового индекса и разрешенных символов можно регулировать непосредственно из панели администратора для каждой страны и зоны. Однако я жду, пока Дэниел выпустит официальную версию, чтобы я мог использовать OCMOD для расширения. Я свяжу это с вами, когда оно будет готово.

Ilmari Ekonen 10.07.2024 14:15

Замечательно! Спасибо!

ashy 11.07.2024 09:14

Другие вопросы по теме