// Check category or query $v = new sfValidatorCallback(array( 'callback' => array($this, 'checkCategoryOrQuery') ,) , array( 'invalid' => 'Veuillez choisir une rubrique ou un mot clé' )); $this->validatorSchema->setPostValidator($v);
et le callback qui va bien:
/** * Check if a category or a keyword has been set. * * @param sfValidator $validator * @param Array $value Form values * @param Array $arguments Validation arguments * * @return mixed */ public function checkCategoryOrQuery($validator, $value, $arguments) { if (empty($value['category_id']) && empty($value['nature_id'])) { throw new sfValidatorError($validator, 'invalid'); } return $value; }
fillin:
enabled: on
param:
id: seller_stockcreate_form
fields:
shop_product{quantity}:
required:
msg: Vous devez selectionner une quantité
itemQuantityValidator:
shop_product{price}:
required:
msg: Vous devez entrer un prix
shopProductPriceValidator:
# Inclusion de l'ensemble des validateurs definis pour le site
<?php include('validate/_validators.yml'); ?>
methods:
post:
- "user_profile{login}"
- "user_profile{password}"
- "user_profile{check_password}"
- "user_profile{email}"
- "user_profile{civility}"
- "user_profile{first_name}"
- "user_profile{last_name}"
- "user_profile{birth_date}"
- "user_profile{address}"
- "user_profile{postal_code}"
- "user_profile{town}"
- "captcha"
- "user_profile{is_newsletter_subscribed}"
- "user_profile{is_partners_subscribed}"
- "user_profile{photo}"
- "user_profile{personal_url}"
fillin:
enabled: true
param:
name: form_register_member
names:
user_profile{login}:
required: Yes
required_msg: le login est obligatoire
validators: [usernameValidator, loginValidator]
user_profile{password}:
required: Yes
required_msg: le mot de passe est requis
validators: passwordValidator
user_profile{check_password}:
required: Yes
required_msg: La confirmation du mot de passe est obligatoire
validators: passwordValidator
user_profile{email}:
required: Yes
required_msg: l'email est obligatoire
validators: [emailValidator, mailuniqValidator]
user_profile{civility}:
required: Yes
required_msg: veuillez choisir votre civilité
user_profile{first_name}:
required: Yes
required_msg: le prénom est obligatoire
validators: usernameValidator
user_profile{last_name}:
required: Yes
required_msg: le nom est obligatoire
validators: usernameValidator
user_profile{birth_date}:
required: Yes
required_msg: le nom est obligatoire
validators: usernameValidator
user_profile{address}:
required: Yes
required_msg: l'adresse est obligatoire
user_profile{postal_code}:
required: Yes
required_msg: le code postal est obligatoire
validators: zipcodeValidator
user_profile{town}:
required: Yes
required_msg: la ville est obligatoire
captcha:
required: Yes
required_msg: vous devez recopier le code
validators: captchaValidator
user_profile{is_newsletter_subscribed}:
required: no
user_profile{is_partners_subscribed}:
required: no
user_profile{photo}:
required: no
user_profile{personal_url}:
required: no
passwordValidator:
class: sfCompareValidator
param:
check: passconf
compare_error: les mots de passe ne correspondent pas
loginValidator:
class: sfPropelUniqueValidator
param:
class: sfGuardUser
column: username
unique_error: ce login est déjà enregistré, choisissez en un autre.
mailuniqValidator:
class: sfPropelUniqueValidator
param:
class: UserProfile
column: email
unique_error: cet email est déjà enregistré, choisissez en un autre.
zipcodeValidator:
class: sfNumberValidator
nan_error: Veuillez n'entrer que des chiffres
min: 5
min_error: le code postal est au minimum composé de 5 chiffres
usernameValidator:
class: sfStringValidator
param:
min: 3
min_error: ce login doit être plus long
emailValidator:
class: sfEmailValidator
param:
email_error: l'adresse email n'est pas valide
captchaValidator:
class: captchaValidator
param:
error: vous devez recopier correctement le code de validation
methods: [post] # This is the default setting
fillin:
enabled: true
param:
name: send_page_to_friend_form
#skip_fields: [email] # Do not repopulate these fields
#exclude_types: [hidden, password] # Do not repopulate these field types
#check_types: [text, checkbox, radio, password, hidden] # Do repopulate these
validators:
myStringValidator:
class: sfStringValidator
param:
min: 2
min_error: This field is too short (2 characters minimum)
max: 100
max_error: This field is too long (100 characters maximum)
fields:
name:
required:
msg: The name field cannot be left blank
myStringValidator:
email:
required:
msg: The email field cannot be left blank
myStringValidator:
sfEmailValidator:
email_error: This email address is invalid
age:
sfNumberValidator
nan_error: Please enter an integer
min: 0
min_error: "You're not even born. How do you want to send a message?"
max: 120
max_error: "Hey, grandma, aren't you too old to surf on the Internet?"
message:
required:
msg: The message field cannot be left blank
Pour eviter les problemes de type MIME, notemment sous MAC.
/** * Fonction de validation manuelle de l'importation * * @internal Pour bug Mac type mime * * @author Vernet Loic * @since 6 mars 2007 */ public function validateImport() { $fieldName = 'importfile'; $fileName = $this->getRequest()->getFileName($fieldName); $validExts = array('.CSV'); if ($this->getRequest()->getMethod() == sfRequest::POST) { if ($fileName) { foreach($validExts as $validExt) { if (strpos(strtoupper($fileName), $validExt)) { return true; } } $this->getRequest()->setError($fieldName , 'Extension invalide, l\'extension doît être .csv'); return false; } else { $this->getRequest()->setError($fieldName , 'Fichier invalide'); return false; } } return true; }
<?php if ($sf_request->hasErrors()) { foreach($sf_request->getErrors() as $key => $error) { echo '<li>'. $key. ' => '. $error. '</li>'; } } ?>
Version synthaxe alternative
<?php if ($sf_request->hasErrors()): ?> <ul> <?php foreach($sf_request->getErrors() as $key => $error): ?> <li><?php echo $key; ?> => <?php echo $error; ?></li> <?php endforeach; ?> </ul> <?php endif; ?>
logs
8139.8 KB