2009-11-25 4 views
1

J'ai un fichier BaseBlahBlahBlahFilter.class généré automatiquement dans mon dossier/lib/filter/base /. Il contient la ligne suivante pour le champ de type « données »:Existe-t-il un moyen de définir les valeurs par défaut du widget sfWidgetFormFilterDate?

'date'   => new sfWidgetFormFilterDate(array('from_date' => new sfWidgetFormDate(), 'to_date' => new sfWidgetFormDate(), 'with_empty' => true)), 

Lorsque la forme des charges, il me montre des valeurs vides pour tous les mois/jour/année de baisse des bas. Y a-t-il un moyen de définir les valeurs par défaut (par exemple la date d'aujourd'hui) à ces listes déroulantes?

Répondre

0

La définition des valeurs par défaut doit être effectuée à partir des fichiers de formulaire, pas de la classe de filtre. Regardez simplement votre fichier 'BlahBlahBlah.class' dans/lib/form et vérifiez s'il a une méthode configure(). Sinon, créez-le:

class BlahBlahBlahForm extends sfForm 
{ 
    public function configure() 
    { 

    } 
} 

Vous pouvez toujours remplacer les classes de base par des classes 'normales'. Créez simplement un fichier avec le même nom, moins la partie 'Base' et ajoutez-le à votre répertoire/lib/form (ou/lib/filter).

De là, vous pouvez faire quelque chose comme:

$this->setDefault('from_date', date('Y/m/d')); 
$this->setDefault('to_date', date('Y/m/d')); 

Dans l'exemple ci-dessus cela, il met à la date actuelle. Modifiez-le pour vos propres besoins.

Un bon début pour lire est le livre Forms. Vous pouvez le trouver here.

0

La réponse deGrandWazoo est correcte pour définir les valeurs par défaut pour sfWidgetFormDate, cependant, nous parlons de sfWidgetFormFilterDate, qui est une extension de sfWidgetFormDateRange. SfWidgetFormDateRange encapsule deux widgets de date distincts. Dans ce cas, vous devez définir la date faire quelque chose comme ce qui suit:

$form->setDefault('date', array('from' => date('Y/m/d'), 'to' => date('Y/m/d'))); 
2

Il y a a bug dans sfWidgetFormSchema qui conduit à ignorer les valeurs de widget par défaut tout en rendant les widgets. Après avoir appliqué a patch vous serez en mesure de simplement dire

'date'   => new sfWidgetFormFilterDate(array(
    'from_date' => new sfWidgetFormDate(array('default' => date())), 
    'to_date' => new sfWidgetFormDate(array('default' => date())), 
    'with_empty' => true)), 

par exemple default option fonctionnera.

Questions connexes