2012-04-24 2 views
0

Dans un contrôleur, je valide l'entrée des champs d'un formulaire d'enregistrement. Je fais des validations simples telles que les champs obligatoires, la validation par courriel, etc.Y at-il un moyen d'insérer facilement des messages d'erreur à la sortie de la sortie de validation de Fuelphp?

Lorsque je reçois un envoi réussi, je tente ensuite de créer l'utilisateur (j'utilise le paquet Sentry). Je veux être en mesure d'attraper les erreurs de ce processus, puis les ajouter aux erreurs de validation et les attacher à des champs spécifiques. Par exemple: si l'email existe déjà, je veux insérer une erreur dans le champ 'email' et lui donner un message d'erreur personnalisé.

J'espérais qu'il y avait un moyen facile de le faire, comme (pseudo-code):

validation- $> error() -> insert_error (field_name $, $ message)

Une manière simple de faire cela?

Répondre

0

La classe de validation native ne le permet pas.

Mais je peux voir 2 solutions pour votre problème.

Première solution (ne pas tester, cela est juste pour l'idée):

<?php 
class CustomFieldError { 
    function rule_which_always_fail($val) { 
     return false; 
    } 
} 
function insert_error($validation, $field_name, $error) { 
    $validation->field($field_name)->->add_rule(array('CustomFieldError', 'rule_which_always_fail'))->set_message($error); 
} 

// You need to do that before $validation->run(); 
if ($duplicate_email) { 
    insert_error($validation, 'email', 'Duplicate email'); 
} 

Deuxième solution: Replace and extends le \ Fuel \ Core \ classe de validation avec votre propre. De cette façon, vous pouvez ajouter la méthode directement dans la classe de validation et ajouter des erreurs avec $this->errors['field_name'] = 'Error message';

[modifier] insert_error() Si vous êtes désireux d'utiliser la 2ème solution, aussi être sûr de les soumettre une demande de fonctionnalité dans leur Github tracker :)

Questions connexes