<?php /** * Form to add a classified ad. * * @author loic.vernet * @since 7 august 08 * * @package form */ class qbNewThreadForm extends qbThreadForm { // Default mask to create fields names public static $main_fields_name = 'qb_thread'; // Default labels protected $labels = array( // Thread 'title' => 'Sujet', 'category_id' => 'Forum', // Contact form 'qb_post' => 'Post', ); // Default fields to keep protected $fields_to_keep = array( // Thread 'id', 'category_id', // Post 'qb_post', ); // Liste of field that can't be modified by direct input values protected static $protected_fields = array( ); /** * Configuration of form. */ public function configure() { // Build widgets $this->setWidgetOptions(); // Set wdigets $this->processWidgets(); // Set validators $this->processValidators(); // Embed other forms $this->embedForms(); } /** * Set generic options for widgets. * * @author loic.vernet * @since */ protected function setWidgetOptions() { // name format $this->widgetSchema->setNameFormat(self::$main_fields_name. '[%s]'); // Set labels $this->setLabels($this->labels); // Allow extra fields for all forms $this->allowExtraFields(); } /** * set all widgets. * * @author loic.vernet * @since */ public function processWidgets() { $this->removeAllFieldsExcept($this->fields_to_keep); $this->widgetSchema['category_id'] = new sfWidgetFormPropelSelect( array( 'model' => 'qbCategory', 'add_empty' => false, //'criteria' => ipAdBasePeer::getCategoriesCriteria() )); $this->widgetSchema['title'] = new sfWidgetFormInput(); } /** * Set all validators. * * @author loic.vernet * @since */ public function processValidators() { $this->validatorSchema['category_id'] = new sfValidatorString( array('required' => true), array('required' => 'Veuillez choisir un forum') ); $this->validatorSchema['title'] = new sfValidatorString( array('required' => true), array('required' => 'Veuillez choisir un titre pour le sujet') ); } /** * Embed other forms to the current form. * * @author loic.vernet * @since */ protected function embedForms() { } }
// 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; }
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
logs
8106.9 KB