Bonsoir
Mon problème est simple : je cherche à filtrer un champ Integer entre 2 valeurs (first/last). Comme par exemple "chercher les personnes agées de 20 à 25 ans....
J'ai fait un "truc", mais je ne vois pas ce qu'il manque:
Donc, j'ai créé une classe lib/filter/KiaFormFilter.class.php dans laquelle je défini les 2 filtres first et last (vous l'aviez compris, ils ne sont pas dans le schema)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class KiaFormFilter extends sfFormFilter {
public function configure() {
$this->setWidgets(array(
'first' => new sfWidgetFormFilterInput(array('with_empty' => false)),
'last' => new sfWidgetFormFilterInput(array('with_empty' => false)),
));
$this->setValidators(array(
'first' => new sfValidatorInteger(array('required' => false)),
'last' => new sfValidatorInteger(array('required' => false)),
));
$this->widgetSchema->setNameFormat('kiaFormFilter[%s]');
$this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema);
} |
dans l'action
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public function executeXfert2kia(sfWebRequest $request) {
$this->kiaFormFilter = new KiaFormFilter();
if ($request->isMethod('post')) {
$this->kiaFormFilter->bind($request->getParameter($this->kiaFormFilter->getName()));
$this->frcaps = Doctrine::getTable('Frcap')
->createQuery()
->where('sample_number >= ?', $request->getParameter('first'))
->andwhere('sample_number <= ?', $request->getParameter('last'))
->orderBy('sample_number ASC')
->execute();
$this->first = $request->getParameter('first');
$this->last = $request->getParameter('last');
$this->setTemplate('kiaresult');
}
} |
affichage du formulaire dans xfert2kiaSuccess
<?php include_partial('frcap/kiaform', array('kiaFormFilter' => $kiaFormFilter)); ?>
et le template partiel
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <form action="<?php echo url_for('frcap/xfert2kia') ?>" method="post" >
<?php echo $kiaFormFilter->renderHiddenFields() ?>
<?php if ($kiaFormFilter->hasGlobalErrors()): ?>
<?php echo $kiaFormFilter->renderGlobalErrors() ?>
<?php endif; ?>
<fieldset>
<br>
<div class="inner_column_01">
<?php echo $kiaFormFilter ?>
</div>
</fieldset>
<hr />
<div class="form_action clear_fix">
<a class="extensible_button extensible_button_01" href="<?php echo url_for('frcap/index') ?>">
<?php $button_text = "Abort"; include_partial('global/content_button', array('button_text' => $button_text)) ?></a>
<button type="submit" class="extensible_button extensible_button_01">
<?php $button_text = "Submit"; include_partial('global/content_button', array('button_text' => $button_text)) ?>
</button>
</div>
</form> |
Résultat, rien : les valeurs first/last ne passent pas dans la requête (de plus ma sfdebug ne fonctionne plus...VDM)
Si quelqu'un voit + clair que moi...
Partager