Bonjour,

J'aimerais un avis à propos d'une architecture bizarre.

Le contexte : je dois afficher un graphe avec un formulaire contenant des options à afficher. A chaque fois que l'utilisateur coche une case et envoie le formulaire, je traite l'info et je reviens sur la même page, avec le graphe à jour.

En PHP classique, mon architecture serait la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
  <head>
    <?php $x="vincent" ?>
    <?php $var = isset($_POST['y']) ? $_POST['y'] : "machine" ?>
  </head>
  <body>
    <?php echo $x ?>
    <form method="POST">
        <input type="text" name="y" value="<?php echo $var ?>"></input>
        <input type="submit" value="OK"></input>
    </form>
  </body>
</html>
A chaque fois que je change la valeur du champ texte, ma variable $var est à jour et je peux l'exploiter pour mon graph (par exemple, c'est la position d'un axe).

Je veux maintenant faire ça avec symfony et j'ai l'impression que je suis assez maladroit.

J'ai créé un formulaire tout simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class CptBudgetaireForm extends BaseForm
{
    public function configure()
    {
        $this->setWidgets(array(
            'nom' => new sfWidgetFormInputText(),
        ));
 
        $this->setValidators(array(
            'nom' => new sfValidatorString(array('max_length' => 255)),
        ));
 
    }
}
Et je me suis basé sur l'action/template index déjà existant pour un certaine modèle pour faire le reste :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
  public function executeIndex(sfWebRequest $request)
  {
    $this->preferences = Doctrine::getTable('Preference')
      ->createQuery('a')
      ->execute();
 
     $this->form1 = new CptBudgetaireForm();
 
    $x = $request->getParameter('nom');
 
    $this->form1->bind(array('nom' => $x));
 
  }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<form action="<?php url_for('preference/index')?>" method="post">
    <?php echo $form1 ?>
    <input type="submit" value="OK"></input>
</form>
Bon, ça marche à peu près, mais je suis prêt à penser que le style n'y est pas du tout.

Qu'en pensez vous?