2010-09-20 11 views
0

J'ai remarqué dans Kohana 3 ces messages d'erreur fournis par défaut.Puis-je formater mes chaînes de validation avec des informations pertinentes dans Kohana 3?

return array(
    'not_empty' => ':field must not be empty.', 
); 

De toute évidence, :field est remplacé par le nom du champ.

Maintenant, je valide un téléchargement d'image. Évidemment, je ne permets que JPG, JPEG, GIF & PNG.

J'ai un message d'erreur mis en place comme ça. J'utilise également l'assistant de validation de Kohana comme tel.

$input->rules('photo', array(
'Upload::type' => array('Upload::type' => array('jpg', 'jpeg', 'png', 'gif')) 
)); 

Est-il possible que je peux utiliser ces extensions acceptées dans ma chaîne d'erreur, peut-être comme ...

return array(
    'photo' => array(
     'Upload::type' => 'You can only upload files of :types' 
    ) 
); 
+0

Votre exemple de code fonctionnera En l'état, il suffit d'utiliser ': param1' à la place de': types'. – shadowhand

+0

Votre code a une erreur, le tableau de types devrait être enveloppé dans un tableau. – shadowhand

+0

@shadowhand Je suivais [l'exemple de Kerkness] (http://kerkness.ca/wiki/doku.php?id=validation). Voulez-vous dire qu'il devrait être 'array ('Upload :: type' => array (array ('jpg', 'jpeg', 'png', 'gif')))'? – alex

Répondre

3

vous pouvez accéder aux paramètres avec: param1: param2 etc

'error' => 'You can only upload files of :param1, :param2, :param3' 

Je suppose que cela ne fonctionne pas si bien avec des quantités variables de paramètres = (

Une solution possible uld serait d'utiliser un callback comme un alias à la règle, puis prendre la liste des formats autorisés et les envoyer au message manuellement en utilisant implode().

ex:

public function valid_type(Validate $array, $field, $formats) 
{ 
    $params = $formats; 
    array_unshift($params, $array[$field]); 
    if (! call_user_func_array(array('Upload', 'type'), $params)) 
    { 
     $array->error($field, 'Upload::type', array('types' => $formats)); 
    } 
} 
+0

Devrais-je ajouter ',' comme premier argument de 'implode()'? – alex

+0

ouais, désolé à ce sujet = P il ressemble également à Kohana fait l'implode() automatiquement donc vous pouvez laisser cela (je pense) mais le reste de l'exemple est bon IMO – Zeelot

+0

À la réflexion, il semble que Upload :: type() prend un tableau de types valides, donc l'exemple biakeveron écrit fonctionne réellement comme prévu. Mon exemple concerne les règles qui prennent une quantité variable de paramètres. – Zeelot

3

Kohana has cette fonction "de la boîte" :)

Donc, vous devez ajouter quelque chose comme ceci:

// messages/validate.php 
return array(
    'upload::type' => ':field should be one of the following types: [:param1]', 
); 
+0

Est-ce que cela affichera seulement le premier param seulement? – alex

+0

Oui. Cet exemple signifie que vous utilisez la règle décrite dans la question (un paramètre pour les types de fichiers disponibles). Kohana convertira automatiquement le tableau en chaîne avec la fonction implode(). – biakaveron

+0

Rappelez-vous que votre premier paramètre est un tableau, donc il est traité comme un seul paramètre, pas multiple. – shadowhand