2016-09-22 2 views
1

Ich entwickle eine Anwendung in CI unterstützt Lebensmittelgeschäft CRUD, aber zum Zeitpunkt der Validierung wird nicht erkannt, was ich brauche ist, dass ein Feld validiert ist, nur alphabetische Zeichen, Pluspunkte, Komma und Leerzeichen akzeptieren funktioniert nicht:Ich validiere Zeichen in Codeigner

Function in controller

Lines of Code in der Funktion von Lebensmittel CRUD in dem, was ich die Funktion solo_letras nennen:

Lines of code in method of Grocery CRUD

Was für eine va wäre Lidation das könnte dauern?

Antwort

0

Verwenden Sie die integrierte Formularvalidierung in CodeIgniter. Ich mache es so. Zu Beginn Ihrer Funktion gesetzt, alle Regeln für die Formulareingaben wie folgt aus:

$this->form_validation->set_rules('inputFirstName', 'First Name', required|min_length[4]|max_length[16]|is_unique[users.username]'); 

Dies ist ein Beispiel für einen Benutzernamen Feld. Der erste Parameter ist die Formulareingabe name='inputFirstName', die zweite ist eine lesbare Version der ersten und wird für die Fehlerberichterstattung verwendet, dann kommen Ihre Validierungen, die durch das Pipe-Zeichen getrennt sind. Es gibt eine Validierung für passende Regex; regex_match[/regex/].

Legen Sie alle Ihre Validierungen dann verwenden:

if($this->form_validation->run() == false) { 
      Do something here if validation fails 
      return false; 
     } 

für die Validierung zu testen. Fahren Sie dann mit dem Code fort, wenn die Validierung erfolgreich ist. Hier

ist eine vollständige Probe einer einfachen Registrierungsfunktion:

public function register() 
    { 

     $this->output->set_content_type('application_json'); 

     $this->form_validation->set_rules('inputUsername', 'User Name', 'required|min_length[4]|max_length[16]|is_unique[users.username]'); 
     $this->form_validation->set_rules('inputEmail', 'Email', 'required|valid_email|is_unique[users.email]'); 
     $this->form_validation->set_rules('inputFirstname', 'First Name', 'required|max_length[20]'); 
     $this->form_validation->set_rules('inputLastname', 'Last Name', 'required|max_length[20]'); 
     $this->form_validation->set_rules('inputPassword', 'Password', 'required|min_length[6]|max_length[16]|matches[inputPasswordConfirm]'); 
     $this->form_validation->set_rules('inputPasswordConfirm', 'Password Confirmation', 'required'); 

     if($this->form_validation->run() == false) { 
      $this->output->set_output(json_encode(['result' => 0, 'error' => $this->form_validation->error_array()])); 
      return false; 
     } 

     $username = $this->input->post('inputUsername'); 
     $email = $this->input->post('inputEmail'); 
     $firstName = $this->input->post('inputFirstname'); 
     $lastName = $this->input->post('inputLastname'); 
     $password = $this->input->post('inputPassword'); 
     $passwordConfirm = $this->input->post('inputPasswordConfirm'); 

     $this->load->model('user_model'); 
     $user_id = $this->user_model->insert([ 
      'username' => $username, 
      'email' => $email, 
      'firstName' => $firstName, 
      'lastName' => $lastName, 
      'password' => hash('sha256', $password . PASSWORD_SALT) 
     ]); 

     if($user_id) { 
      $this->session->set_userdata(['user_id' => $user_id]); 
      $this->output->set_output(json_encode(['result' => 1])); 
      return false; 
     } 

     $this->output->set_output(json_encode(['result' => 0, 'error' => "User not created."])); 

    } 
+0

Ich verstehe aber, was ich brauche ist die Validierung für das Feld auf nur akzeptieren Zeichen von A bis Z zusätzlich zu den folgenden Zeichen {[Leerzeichen] . ,} –

+0

Hier ist eine große Regex-Testseite. http://www.regexr.com/ – Dominofoe

+0

Sorry, der andere enthielt Ziffern. Das ist, was du willst. '/ [a-z, A-Z \ s \. \,]/g' – Dominofoe