2016-11-28 2 views
0

Ich kann nicht herausfinden, wo ich meinen Callback platzieren soll, wenn ich Validierungsregeln für eine Konfigurationsdatei in CI3 verwende. Hier ist meine form_validation.php:CI3/Validierungsregeln zu einer Config-Datei & Verwendung eines Callbacks

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

$config = array(
    'blog_post' => array(

     array(
     'field' => 'entry_name', 
     'label' => 'entry_name', 
     'rules' => 'min_length[8]|trim|required|max_length[255]' 
     ), 

     array(
     'field' => 'entry_body', 
     'label' => 'entry_body', 
     'rules' => 'trim|required|min_length[12]|callback_html_length_without_html' 
     ), 
    ), 
); 

function html_length_without_html(){ 
    if (2 < 1) 
    { 
     $this->form_validation->set_message('html_length_without_html', 'The field can not be the word'); 
     return FALSE; 
    } else { 
     return TRUE; 
    } 
} 

Allerdings, wenn ich die oben laufen, bekomme ich folgende Fehlermeldung:

Unable to access an error message corresponding 
to your field name entry_body.(html_length_without_html) 

Wo platziere ich den Rückruf "html_length_without_html()"?

+0

Vielleicht wird das Lesen der Bedienungsanleitung ein wenig Licht auf die Antwort werfen. https://www.codeigniter.com/userguide3/libraries/form_validation.html#callbacks-your-own-validation-methods – TimBrownlaw

+0

Ja, habe gelesen und offensichtlich nicht bekommen. – user3264461

+0

Nun, diese Funktion würde in den Controller gehen, wo Sie die eigentliche Validierung durchführen. Derselbe Controller, bei dem Sie die Konfiguration der Formularüberprüfung verwenden, um die Validierungsregeln zu konfigurieren. – TimBrownlaw

Antwort

1

Sie können extend oder erstellen Sie eine Methode in der Steuerung. Ich bevorzuge es, mit einer Hilfsfunktion zu "erweitern". Unter der Annahme, dass Sie $_POST verwenden:

application/Helfer/form_validation_helper.php oder nur mit MY_form_helper.php erstreckt:

<?php 

if (! defined('BASEPATH')) exit('No direct script access allowed'); 

if (!function_exists('html_length_without_html')) { 

function html_length_without_html() { 
    $ci = & get_instance(); 
    $entry_body = $ci->input->post('entry_body'); 
    /*Do some check here to define if is TRUE or FALSE*/ 
    if ($entry_body < 1) { 
     $ci->form_validation->set_message('html_length_without_html', 'The field can not be the word'); 
     return FALSE; 
    } 
    else { 
     return TRUE; 
    } 
} 

} 

Nichts falsch mit $ci->form_validation->set_message('html_length_without_html', 'The field can not be the word');, aber wenn man die lang-Klasse verwenden, Sie sollten die folgende Zeile in application/language/english/form_validation_lang.php speichern erfolgreichen Rückruf Antwort zu erhalten:

$lang['html_length_without_html'] = 'The field can not be the word'; 

vergessen Sie nicht, den Helfer vor der Verwendung zu laden es: $this->load->helper('form_validation_helper'); oder autoload, stattdessen.

+0

Korrektur: Es sollte $ this-> load-> helper ('form_validation') sein; Der Teil _helper.php ist impliziert, da es ein Helfer ist. – TimBrownlaw

+0

hat diesen Kommentar gelöscht. – user3264461

+0

Ich verwende POST, PUT (GET, DELETE). Natürlich sind POST und PUT die Täter, die betroffen wären. Dies ist durch Phil Sturgeon API-Server. – user3264461

Verwandte Themen