2010-11-22 6 views
0

Ich tauche tiefer in kohana und ich mag es sehr viel. Besonders das HMVC-Zeug und vieles mehr. im Moment habe ich Probleme mit dem Hinzufügen eigener Regeln zur Validierungsinstanz.hinzufügen individuelle Validierung Regel und Funktion, kohana 3.0.8

Validierung läuft gut, und ich denke auch, dass meine eigene Funktion richtig aufgerufen wird. aber das Problem ist, dass die Fehlermeldung für meine eigene Validierungsfunktion nicht angezeigt wird.

vielleicht kann jemand in den Code schauen, um zu sehen, was ich falsch gemacht habe. Vielen Dank!

hier ist mein Code, den ich ein paar Sachen gelöscht es ein wenig zu verkürzen, bis:

class Controller_Bookmarks extends Controller_DefaultTemplate 
    { 

    public function action_create_bookmark() 
    { 
    $posts       = new Model_Post(); 

    if($_POST){ 
    $post = new Validate($_POST,$_FILES); 

    //attaching rules 
    $post ->rule('bookmark_title', 'not_empty') 
    ->rule('bookmark_image', 'Model_Post::email_change'); 

    //add error for custom functionm 
    $post->error('bookmark_image', 'email_change'); 


    if ($post->check()) 
    { 
    echo 'yeah'; 
    }else{ 
    print_r($post->errors('validate')); 
    } 
    }else{ 

    } 

    $this->template->content   = View::factory('pages/create_bookmark'); 
    } 
    } 

mein Modell:

class Model_Post extends Kohana_Model 
{ 

public function email_change($str) 
{ 


    return false; 

} 


} 

meine Fehlermeldung Definition Nachrichten/validate.php (nur zum Testen) :

 <?php defined('SYSPATH') or die('No direct script access.');<br /> 
    return array(
    'alpha'   => ':field must contain only letters', 
    'alpha_dash' => ':field must contain only letters and dashes', 
    'alpha_numeric' => ':field must contain only letters and numbers', 
    'color'   => ':field must be a color', 
    'credit_card' => ':field must be a credit card number', 
    'date'   => ':field must be a date', 
    'decimal'  => ':field must be a decimal with :param1 places', 
    'digit'   => ':field must be a digit', 
    'email'   => ':field must be a email address', 
    'email_domain' => ':field must contain a valid email domain', 
    'exact_length' => ':field must be exactly :param1 characters long', 
    'in_array'  => ':field must be one of the available options', 
    'ip'   => ':field must be an ip address', 
    'matches'  => ':field must be the same as :param1', 
    'min_length' => ':field must be at least :param1 characters long', 
    'max_length' => ':field must be less than :param1 characters long', 
    'phone'   => ':field must be a phone number', 
    'not_empty'  => ':field rrrrrrrrrrrrrrrrrrrrr must not be empty', 
    'range'   => ':field must be within the range of :param1 to :param2', 
    'regex'   => ':field does not match the required format', 
    'url'   => ':field must be a url', 
    'email_change' => ':field gdffddfgdfhgdfhdfhhdfhdfhdfhd', 
    ); 

Antwort

3

Sie Fehler 0 innerhalb sollte hinzufügenanrufen. Beachten Sie, dass das Validate-Objekt vorhandene Fehler löscht, nachdem Sie $post->check() aufgerufen haben! Sie können es sehen, indem Sie $post->errors() (ohne params) verwenden - es wird keine solche Fehlermeldung geben.

+0

das ist es, vielen Dank viel. so leicht kann es manchmal sein. –