带验证的Opencart额外字段客户编号

带验证的Opencart额外字段客户编号,opencart,opencart2.x,modification-form,Opencart,Opencart2.x,Modification Form,我试图在客户的(admin->customer->tab general)customer部分添加一个名为customer number的新字段(以编程方式)。一切正常,但我不想在数据库中得到两个数字,因为用户可以输入自己的数字。每次从管理员创建新用户时,代码都会查找最后一个(最高)客户编号,并向其添加+1 我无法找到此案例的解决方案: 如果客户已经存在(编辑模式),则应显示不可编辑的值(只读) 如果注册新客户,应显示最后一个(最高)客户编号(可编辑)。如果用户输入的编号低于最高客户编号,则应

我试图在客户的(admin->customer->tab general)customer部分添加一个名为customer number的新字段(以编程方式)。一切正常,但我不想在数据库中得到两个数字,因为用户可以输入自己的数字。每次从管理员创建新用户时,代码都会查找最后一个(最高)客户编号,并向其添加+1

我无法找到此案例的解决方案:

  • 如果客户已经存在(编辑模式),则应显示不可编辑的值(只读)

  • 如果注册新客户,应显示最后一个(最高)客户编号(可编辑)。如果用户输入的编号低于最高客户编号,则应显示错误,并应显示最高客户编号+1

这是我目前掌握的代码 在控制器(getForm)中:

在验证(validateForm)中:

$data['latest_customer']=$this->model_sale_customer->getLatestCustomerNumber();
如果(设置($this->request->post['customer\u number'])和($this->request->post['customer\u number']错误['customer\u number']=$this->language->get('error\u customer\u number');
}
在我的customer_form.tpl中,我有:

<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>
 <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" readonly />
                  <input type="hidden" name="existing_customer" value="1" id="input-existing-customer" 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" />
                    <input type="hidden" name="existing_customer" value="0" id="input-existing-customer" class="form-control" />
                    <?php } ?>
                    <?php if ($error_customer_number) { ?>
                  <div class="text-danger"><?php echo $error_customer_number; ?></div>
                  <?php  } ?>
                </div>
              </div>


对于其他正在研究这个问题的人,我自己解决了我的问题。阿里的评论让我思考。我添加了一个隐藏的输入字段,以便可以对照它进行检查。它是否是现有客户(是否有编号)。我只需检查新客户,因为它是一个输入字段(现有是只读的,因此不可编辑)。检查的目的是查看这是否是新客户(值0)-是过账值<最高客户编号。就是这样

这是我在控制器(getForm)中的代码:

if(设置($this->error['customer\u number'])){
$data['error\u customer\u number']=$this->error['customer\u number'];
}否则{
$data['error\U customer\U number']='';
}
如果(设置($this->request->post['customer\u number'])&($this->request->post['customer\u number']<$data['latest\u customer'])&&$this->request->post['existing\u customer']='0')){
$this->request->post['customer_number']='0';
$data['customer_number']='0';
}elseif(isset($this->request->post['customer\u number'])){
$data['customer\u number']=$this->request->post['customer\u number'];
}elseif(!empty($customer\u info)){
$data['customer_number']=$customer_info['customer_number'];
}否则{
$data['customer_number']='0';
}
如果(设置($this->request->post['existing\u customer'])){
$data['existing_customer']=$this->request->post['existing_customer'];
}否则{
$data['existing_customer']='0';
}
在验证(validateForm)中:

$data['latest_customer']=$this->model_customer\u customer->getLatestCustomerNumber();
如果(设置($this->request->post['customer_number'])&($this->request->post['customer_number']<$data['latest_customer'])&($this->request->post['existing_customer']='0'.$data['existing_customer']='0')){
$this->error['customer\u number']=$this->language->get('error\u customer\u number');
}
在我的customer_form.tpl中,我有:

<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>
 <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" readonly />
                  <input type="hidden" name="existing_customer" value="1" id="input-existing-customer" 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" />
                    <input type="hidden" name="existing_customer" value="0" id="input-existing-customer" class="form-control" />
                    <?php } ?>
                    <?php if ($error_customer_number) { ?>
                  <div class="text-danger"><?php echo $error_customer_number; ?></div>
                  <?php  } ?>
                </div>
              </div>


您必须使用多个条件才能实现此目的。如果您愿意,我可以帮助您。您好,阿里,谢谢您的帮助。您可以向我展示一些需要使用的示例条件吗?您可以声明一个变量,并通过
请求
获取
id
。如果
url
中有一些
id
,您可以禁用
验证中检查
。类似的。有关更多详细信息,您可以在skype上添加我。我的id是
syed_Aliu_zia
$data['latest_customer'] = $this->model_customer_customer->getLatestCustomerNumber();

    if (isset($this->request->post['customer_number']) && (($this->request->post['customer_number'] < $data['latest_customer']) && ($this->request->post['existing_customer'] == '0' || $data['existing_customer'] = '0'))) {
        $this->error['customer_number'] = $this->language->get('error_customer_number');
    }
 <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" readonly />
                  <input type="hidden" name="existing_customer" value="1" id="input-existing-customer" 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" />
                    <input type="hidden" name="existing_customer" value="0" id="input-existing-customer" class="form-control" />
                    <?php } ?>
                    <?php if ($error_customer_number) { ?>
                  <div class="text-danger"><?php echo $error_customer_number; ?></div>
                  <?php  } ?>
                </div>
              </div>