Я пытаюсь добавить новое поле (программно) в раздел клиента (admin-> customer-> tab) клиентов, называемый номером клиента. Все работает так, как ожидалось, но я не хочу получать двойные числа в базе данных, так как пользователь может ввести свой собственный номер. Каждый раз, когда новый пользователь получает от администратора, код ищет последний (самый высокий) номер клиента и добавляет +1 к нему.Номер клиента дополнительного поля Opencart с подтверждением
Я не могу найти решение для этого случая:
Если клиент уже существует (режим редактирования) он должен показывать не редактируемые значения (только для чтения)
при регистрации нового клиента в последний (самый высокий) номер клиента должен быть показан (редактируемый). Если пользователь вводит номер, который меньше, чем самый высокий номер клиента, должна появиться ошибка, и должен отображаться максимальный номер клиента + 1.
Это код, который я до сих пор В контроллере (getForm):
if (isset($this->error['customer_number'])) {
$data['error_customer_number'] = $this->error['customer_number'];
} else {
$data['error_customer_number'] = '';
}
$data['latest_customer'] = $this->model_sale_customer->getLatestCustomerNumber();
if (isset($this->request->post['customer_number'])) {
$data['customer_number'] = $this->request->post['customer_number'];
} elseif (!empty($customer_info)) {
$data['customer_number'] = $customer_info['customer_number'];
} else {
$data['customer_number'] = '0';
}
В валидации (validateForm):
$data['latest_customer'] = $this->model_sale_customer->getLatestCustomerNumber();
if (isset($this->request->post['customer_number']) && ($this->request->post['customer_number'] <= $data['latest_customer'])) {
$this->error['customer_number'] = $this->language->get('error_customer_number');
}
В моей customer_form.tpl I имеют:
<div class="form-group">
<label class="col-sm-2 control-label" for="input-customer-number"><span data-toggle="tooltip" title="<?php echo $help_customer_number; ?>"> <?php echo $entry_customer_number; ?></span></label>
<div class="col-sm-10">
<?php if (!empty($customer_number) || $customer_number != 0){ ?>
<input type="text" name="customer_number" value="<?php echo $customer_number; ?>" placeholder="<?php echo $entry_customer_number; ?>" id="input-customer-number" class="form-control" />
<?php }else{ ?>
<input type="text" name="customer_number" value="<?php echo $latest_customer + 1; ?>" placeholder="<?php echo $entry_customer_number; ?>" id="input-customer-number" class="form-control" />
<?php if ($error_customer_number) { ?>
<div class="text-danger"><?php echo $error_customer_number; ?></div>
<?php } ?>
<?php } ?>
</div>
</div>
Это, очевидно, не работает, потому что при редактировании существующего клиента номер клиента всегда ниже, чем самый высокий номер клиента в системе (и, таким образом, дает ошибку). Надеюсь, кто-то может помочь мне с этим! Заранее спасибо!
Для этого вам нужно будет использовать несколько условий. Я могу помочь вам с этим, если вы хотите. –
Привет, Али, спасибо, что помогли мне. Можете ли вы показать мне некоторые примеры условий, которые мне нужно использовать? – Danny
Вы можете объявить переменную и получить запрос 'id' через' запрос'. Если в 'url' есть некоторая' id', вы можете отключить 'check' в' validation'. Что-то вроде того. Для получения дополнительной информации вы можете добавить меня в skype. Мой идентификатор - 'syed_ali_zia' –