2011-08-22 3 views
0

J'essaie de condenser un peu mon contrôleur, principalement en raison de l'esthétique de l'URI. En ce moment, mon contrôleur fonctionne, mais s'il y a une erreur, il me reste contrôleur/processus que je ne veux pas vraiment être là, je préfère être ajouter.CodeIgniter - Le traitement des formulaires est lent, et ne renvoie pas les valeurs sur erreur

Je tenté de reconstruire mon contrôleur avec

public function add() 
{ 
    if ($this->input->server('REQUEST_METHOD') === 'POST') 
    { 
     if ($this->form_validation->run('add') === FALSE) 
     { 
      $this->add(); // reload the method/form for errors. 
     } 
     else 
     { 
      $this->_process(); // private function for inserting the data. 
     } 
    } 
    else 
    { 
    $this->load->view('add_form') 
    } 
} 

Ce qui se passe est la forme prend beaucoup de temps terrible (seulement comme 5 secondes, mais c'est encore dégoûtante horribles), recharge alors la forme, mais pas d'erreurs sont affichés et les formulaires ne sont pas repeuplement. Je me sens comme c'est un problème super simple qui est une erreur d'utilisateur pur, mais je ne peux pas savoir exactement ce que je fais mal ici qui rend ce processus si difficile.

Répondre

1

Lorsque le formulaire ne se charge pas, vous appelez à nouveau la méthode add(), ce qui l'oblige probablement à continuer de boucler sur lui-même. Je factoriser le code à quelque chose comme ceci:

public function add() 
{ 
    if ($this->form_validation->run('add')) 
    { 
     $this->_process(); // private function for inserting the data. 
     redirect('controller_name/method_name'); 
    } 

    $this->load->view('add_form') 
} 

avis j'ai enlevé le chèque pour voir s'il y a un POST envoyé parce que la forme ne validera pas s'il n'y a pas $_POST var pour vérifier contre. En outre, je mets dans un redirect() pour envoyer l'utilisateur à une méthode différente, ou même recharger la même méthode, mais il va effacer le $_POST et arrêter le reste de la méthode de l'exécution.

+0

Le problème de bouclage est logique, mais si j'utilise redirect(), la validation est perdue (la repopulation des champs). Ce qui est une forme qui a environ 25 champs, et je suis sûr qu'un utilisateur serait assez bon s'il devait refaire tout le formulaire tout simplement parce qu'ils ne l'ont pas rempli. Ce que vous avez dit est logique et je verrai avec quoi je peux travailler. Je me suis juste dit que $ this-> add() rechargerait simplement la méthode. Je ne pense pas. Merci. – Sebhael

+0

J'ai mal lu ce que vous aviez dit au début, puis je l'ai parcouru à nouveau et je l'ai compris. Merci. – Sebhael

+0

Pas de problème. Heureux d'avoir pu aider! –

Questions connexes