2016-12-21 10 views
0

Я хочу добавить код-идентификатор в форме регистрации в OpenCart 2.0.3.1, но в панели администратора просто выбратьКак добавить тип в настраиваемое поле в opencart?

этого типа ---> (выберите, выберите файл, дата), мой тип поля "int" и "unique" и "its Length" - 10?

Как это сделать?

+0

никто не может мне помочь :( – mahsash5

+0

я не знаю, что вы ищете именно – DigitCart

+0

я добавил " Мелли-код»в форме регистрации, я хочу клиентов просто поставить номер и он должен быть уникальным – mahsash5

ответ

0

Пользовательские поля в Opencart не имеют возможности проверки, поэтому, если вам нужна проверка, вы должны добавить нужные поля вручную.

Я создал vqmod скрипт, который добавляет новое поле с проверкой типа и длинами (она должна быть числовой ровно 10 цифр), скрипт добавляет новый столбец code_melli с UNIQE индексом для предотвращения хранения дублированных записей.

Поскольку речь идет о регистрационной форме, этот скрипт подготовлен только в этой форме, если вы хотите, чтобы ваш клиент редактировал его из своей учетной записи или эхо его в панели администратора, вы должны его улучшить.

Я проверил это на OpenCart 2.0.3.1 с темой по умолчанию:?.

<?xml version="1.0" encoding="UTF-8"?> 
<modification> 
    <id>Code Melli</id> 
    <version>2.0.3.1</version> 
    <vqmver>2.6.0</vqmver> 
    <author>darbaze.com</author> 

    <file name="catalog/model/account/customer.php"> 
     <operation error="skip"> 
      <search position="after"><![CDATA[extends Model {]]></search> 
      <add><![CDATA[ 
       public function checkCodeMelli() { 
        $hasCodeMelli = false; 
        $result = $this->db->query("DESCRIBE " . DB_PREFIX . "customer"); 
        foreach ($result->rows as $row) { 
         if ($row['Field'] == 'code_melli') { 
          $hasCodeMelli = true; 
          break; 
         } 
        } 
        if (!$hasCodeMelli) { 
         $sql = "ALTER TABLE `" . DB_PREFIX . "customer` ADD `code_melli` INT(10) NULL AFTER `lastname`, ADD UNIQUE (`code_melli`) ;"; 

         $this->db->query($sql); 
        } 
       } 

       public function getTotalCustomersByCodeMelli($code_melli) { 
        $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "customer WHERE code_melli = '" . (int)$code_melli . "'"); 

        return $query->row['total']; 
       } 
      ]]></add> 
     </operation> 
     <operation error="skip"> 
      <search position="iafter"><![CDATA[email = '" . $this->db->escape($data['email']) . "',]]></search> 
      <add><![CDATA[code_melli = '" . $this->db->escape($data['code_melli']) . "',]]></add> 
     </operation> 
    </file> 

    <file name="catalog/controller/account/register.php"> 
     <operation error="skip"> 
      <search position="after"><![CDATA[$this->load->model('account/customer');]]></search> 
      <add><![CDATA[ 
       $this->model_account_customer->checkCodeMelli(); 
      ]]></add> 
     </operation> 
     <operation error="skip"> 
      <search position="before"><![CDATA[if (isset($this->error['email'])) {]]></search> 
      <add><![CDATA[ 
       if (isset($this->error['code_melli'])) { 
        $data['error_code_melli'] = $this->error['code_melli']; 
       } else { 
        $data['error_code_melli'] = ''; 
       } 
      ]]></add> 
     </operation> 
     <operation error="skip"> 
      <search position="before"><![CDATA[if (isset($this->request->post['email'])) {]]></search> 
      <add><![CDATA[ 
       if (isset($this->request->post['code_melli'])) { 
        $data['code_melli'] = $this->request->post['code_melli']; 
       } else { 
        $data['code_melli'] = ''; 
       } 
      ]]></add> 
     </operation> 
     <operation error="skip"> 
      <search position="after"><![CDATA[function validate() {]]></search> 
      <add><![CDATA[ 
       if (!is_numeric($this->request->post['code_melli']) || (utf8_strlen(trim($this->request->post['code_melli'])) != 10)) { 
        $this->error['code_melli'] = 'کد ملی به درستی وارد نشده است'; 
       } 
       if ($this->model_account_customer->getTotalCustomersByCodeMelli($this->request->post['code_melli'])) { 
        $this->error['warning'] = 'این کد ملی قبلا ثبت شده است'; 
       } 
      ]]></add> 
     </operation> 
    </file> 

    <file name="catalog/view/theme/*/template/account/register.tpl"> 
     <operation error="skip"> 
      <search position="before" index="1" offset="1"><![CDATA[<?php echo $entry_email; ?>]]></search> 
      <add><![CDATA[ 
       <div class="form-group required"> 
       <label class="col-sm-2 control-label" for="input-code_melli">کد ملی</label> 
       <div class="col-sm-10"> 
        <input type="code_melli" name="code_melli" value="<?php echo $code_melli; ?>" placeholder="کد ملی" id="input-code_melli" class="form-control" /> 
        <?php if ($error_code_melli) { ?> 
        <div class="text-danger"><?php echo $error_code_melli; ?></div> 
        <?php } ?> 
       </div> 
       </div> 
      ]]></add> 
     </operation> 
    </file> 

</modification>