2017-09-26 2 views
-1

Mon point de vue:PHP validation de formulaire CodeIgniter

<div class="row eva-add-mainbox"> 
      <div class="col s3 eva-aditem-leftbox"> 
       <p>Product Item Name</p> 
      </div> 
      <div class="col s9"> 
       <div class="input-field col s12"> 
        <input type="text" name="pname" class="validate" id="proName"> 
        <label for="icon_prefix">Product Item Name</label> 
       </div> 
      </div> 
     </div> 

mon contrôleur: -

$this->form_validation->set_rules('itemCode', 'Item Code', 'trim|required|min_length[2]|max_length[38]|xss_clean'); 
    $this->form_validation->set_rules('pDescription', 'Product Description', 'trim|required|min_length[2]|max_length[38]|xss_clean'); 
    $this->form_validation->set_rules('productPrice', 'Price', 'required|max_length[12]|regex_match[/^[0-9.]+$/]|xss_clean'); 
    $this->form_validation->set_rules('proQuantity', 'Quantity', 'max_length[12]|numeric|greater_than[0]|xss_clean'); 
    $this->form_validation->set_rules('pname', 'Name', 'trim|required|min_length[2]|max_length[38]|xss_clean'); 

    if($this->form_validation->run() == TRUE) { 
     if ($_FILES["file"]["name"] != '') { 
      $test = explode('.', $_FILES['file']['name']); 
      $extension = end($test); 
      $name = rand(100, 999) . '.' . $extension; 
      $location = './images/' . $name; 
      move_uploaded_file($_FILES['file']['tmp_name'], $location); 
      $b = $this->session->userdata('business'); 
      $pdata['product_code'] = $this->input->post('itemCode'); 
      $pdata['title'] = $this->input->post('pName'); 
      $pdata['discription'] = $this->input->post('description'); 
      $pdata['business_id'] = $b->biz_id; 
      $pdata['price'] = $this->input->post('price'); 
      $proQuantity = $this->input->post('proQuantity'); 
      $pdata['image'] = $location; 
      $pAttribute = $this->input->post('pAttribute'); 
      $pValue = $this->input->post('pValue'); 
     } 

     $result = $this->product_model->setProductData($pdata, $pAttribute, $pValue, $proQuantity); 
    }else 
    { 
     echo validation_errors(); 
    } 

je reçois une erreur:

Le champ Description du produit est nécessaire.

Le champ Prix est obligatoire.

Le champ Nom est obligatoire.

Quelqu'un peut-il expliquer pourquoi cela se produit?

+1

parce que vous définissez des règles qui ont besoin de ces champs ?? '$ this-> form_validation-> set_rules ('itemCode', 'Code de l'article', 'trim | required | min_length [2] | max_length [38] | xss_clean'); $ this-> form_validation-> set_rules ('pDescription', 'Description du produit', 'trim | required | min_length [2] | max_length [38] | xss_clean'); 'etc .... Ce n'est pas parce que ces champs ne sont pas dans votre formulaire HTML que le contrôleur ne s'attend pas à ce qu'ils soient soumis. Si vous voulez une version réduite du formulaire où seulement certains des champs vont être saisis, vous aurez besoin d'un ViewModel séparé avec ses propres règles de validation. – ADyson

+0

Parce que vous les avez définis comme requis dans vos règles de validation –

Répondre

1

En validation vous validez ces trois champs thats pourquoi sa venue

$this->form_validation->set_rules('pDescription', 'Product Description', 'trim|required|min_length[2]|max_length[38]|xss_clean'); 
$this->form_validation->set_rules('proQuantity', 'Quantity', 'max_length[12]|numeric|greater_than[0]|xss_clean'); 
    $this->form_validation->set_rules('pname', 'Name', 'trim|required|min_length[2]|max_length[38]|xss_clean');