2017-09-19 10 views
0

J'essaie de passer un tableau de mon contrôleur à la section de vue dans la balise pour afficher les options- ne fonctionne pas cela fonctionnait avant quand il n'y a pas de validation de formulaire et de modèle pour insérer les valeurs dans la base de données. Si la validation de formulaire est supprimée du contrôleur, le formulaire est directement soumis avec des valeurs nulles indiquant que l'erreur nom_colonne ne peut pas être nulle. Quel est le problème dans mon code? Sil te plait aide moi!J'essaie de passer un tableau de mon contrôleur à la section de vue dans <select> tag pour afficher les options- ne fonctionne pas

contrôleur où iam passant le tableau à mon avis

public function getskill() 
{ 
    if (!$this->session->userdata('logged_in')) { 
     redirect('login'); 
    } 

    $this->form_validation->set_rules('give_my_best', 'Give my best', 'required'); 
    $this->form_validation->set_rules('skills', 'Skills', 'required'); 
    $this->form_validation->set_rules('have_done', 'Have done', 'required'); 
    $this->form_validation->set_rules('work', 'I work', 'required'); 

    if ($this->form_validation->run() === false) { 
     $this->load->view('templates/pheader'); 
     $this->load->view('profile/editskill'); 
     $this->load->view('templates/pfooter'); 
    } else { 
     $dataArr = array(

      "give_my_best" => ["On Stage", "Back Stage", "Services"], 
      "OnStage"  => ["Actor", "Modelling", "Theatre Artist", "Dancer", "Singer", "Comedian", "Stand-up", "Voice-over", "Musician", "Composer", "Stunts", "Junior Artist", "Child Artist", "Compere/Host", "Reality show artist"], 
      "BackStage" => ["Producer", "Financer", "Director", "Story Writer", "Lyricist", "Dialogue writer", "Action", "Screenplay", "Cinematography", "Art Director", "Background score", "Editing", "Choreography", "Sound design", "Special Effects", "Costume design", "Make up artist", "Content writer"], 
      "Services"  => ["Prop suppplier", "Technician", "Vendor"] 


     ); 
     $this->load->view('templates/pheader'); 
     $this->load->view('profile/editskill', $dataArr); 
     $this->load->view('templates/pfooter'); 

     $this->profile_model->insert_skill(); 
     redirect('profile/vabout'); 
    } 
} 

Modèle pour insérer des valeurs dans la base de données

public function insert_skill() { 
    $data = array(
     'give_my_best' => $this->input->post('give_my_best'), 
     'occupation' => $this->input->post('skills'), 
     'have_done' => $this->input->post('have_done'), 
     'work' => $this->input->post('work') 
    ); 
    $this->db->insert('profiles',$data); 
} 

Vue: Ceci est la forme où iam passant le tableau

<form method="post" id="editskill" action="<?php echo base_url(); ?>profile/getskill" name="editskill"> 
    <div class="form-group"> 
     <label class="col-md-3 text-right">I give my best:</label> 
     <div class="col-md-9"> 
      <select class="chosen-select" 
        name="give_my_best" 
        data-placeholder="Give best" 
        tabindex="6" 
        id="" 
        multiple="multiple"> 
       <?php foreach($give_my_best as $value) { ?> 
       <option value="<?php echo $value; ?>"><?php echo $value; ?></option> 
       <?php } ?> 
      </select> 
     </div> 
    </div> 
    <br><br><br> 
    <div class="form-group"> 
     <label class="col-md-3 text-right">Skills:</label> 
     <div class="col-md-9"> 
      <select class="chosen-select" name="skills" data-placeholder="Skills" tabindex="6" id="" 
        multiple="multiple"> 
       <optgroup label="On Stage"> 
        <?php foreach($OnStage as $value) { ?> 
        <option value="<?php echo $value; ?>"><?php echo $value; ?></option> 
        <?php } ?> 
       </optgroup> 
       <optgroup label="Back Stage"> 
        <?php foreach($BackStage as $value) { ?> 
        <option value="<?php echo $value; ?>"><?php echo $value; ?></option> 
        <?php } ?> 
       </optgroup> 
       <optgroup label="Services"> 
        <?php foreach($Services as $value) { ?> 
        <option value="<?php echo $value; ?>"><?php echo $value; ?></option> 
        <?php } ?> 
       </optgroup> 
      </select> 
     </div> 
    </div> 
    <br><br> 
    </div> <!-- Angular JS ends here --> 
    <div class="form-group"> 
     <button type="submit" 
       class="btn btn-primary col-md-7 col-md-offset-3 text-right" 
       id="submit" 
       value="submit" 
       name="submit">Submit 
     </button> 
    </div> 
</form> 
+0

si vous voulez rediriger vers une autre page que pourquoi vous affichez le chargement –

+0

Où sont les entrées/sélections pour 'have_done' et 'work'? – Vladut

Répondre

1

Dans votre contrôleur, vous chargement des vues et il rediriger aussi à un autre

$this->load->view('templates/pheader'); 
$this->load->view('profile/editskill', $dataArr); 
$this->load->view('templates/pfooter'); 

$this->profile_model->insert_skill(); //put this line before you load the views 
redirect('profile/vabout'); //you can remove this line 

réarranger donc ces lignes comme

$this->profile_model->insert_skill(); 
$this->load->view('templates/pheader'); 
$this->load->view('profile/editskill', $dataArr); 
$this->load->view('templates/pfooter'); 

Et vous n'avez pas besoin d'utiliser deux fonctions différentes à l'intérieur du contrôleur pour soumettre un formulaire, Vous pouvez le faire avec une seule fonction et vous avez juste besoin de vérifier si le formulaire soumis alors #insert code else afficher la vue normale

+0

J'ai déjà essayé, je ne travaille pas ... @Harish –