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)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<?php include_partial('frcap/kiaform', array('kiaFormFilter' => $kiaFormFilter)); ?>
et le template partiel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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...