Magazine High tech

slyBlog – Tutoriel Vidéo Symfony 1.4 – Partie 8

Publié le 18 avril 2011 par Ph3nol

La huitième partie de ce tutoriel abordera la mise en place de formulaires, à travers l’envoi de commentaires sur notre blog :

  • mise en place de notre formulaire à l’aide du composant sfForm
  • mise en place des validateurs du formulaire
  • validation du formulaire depuis l’action du module posts
  • découverte des notifications Symfony via setFlash et getFlash

If you can see this, then you might need a Flash Player upgrade or you need to install Flash Player if it's missing. Get Flash Player from Adobe.

Des questions, remarques ou suggestions ? N’hésitez pas à me suivre sur Twitter, rejoindre la page Facebook ou suivre le flux RSS du blog.

Sources

Formulaire CommentForm.class.php :

useFields(array(
      'author', 'comment'
    ));

    $this->widgetSchema['comment'] = new sfWidgetFormTextarea();

    $this->widgetSchema->setLabels(array(
      'author' => 'Votre pseudonyme :',
      'comment' => 'Votre commentaire :',
    ));

    $this->widgetSchema->setFormFormatterName('list');
    $this->widgetSchema->setNameFormat('comment[%s]');

    $this->validatorSchema['author'] = new sfValidatorString(array('required' => true), array('required' => 'Champs obligatoire !'));
    $this->validatorSchema['comment'] = new sfValidatorString(array('required' => true, 'min_length' => 10), array('required' => 'Champs obligatoire !', 'min_length' => '%min_length% caractères minimum !'));
  }
}

L’action executeShow du module posts :

  public function executeShow(sfWebRequest $request)
  {
    $this->post = $this->getRoute()->getObject();

    $postComment = new Comment();
    $postComment->setPost($this->post);

    $this->commentForm = new CommentForm($postComment);

    if ($request->isMethod('post'))
    {
      $this->commentForm->bind(
        $request->getParameter($this->commentForm->getName())
      );

      if ($this->commentForm->isValid())
      {
        $this->commentForm->save();

        $this->getUser()->setFlash('success', 'Commentaire posté !');

        $this->redirect('posts_show', $this->post);
      }
      else
      {
        $this->getUser()->setFlash('error', 'Des champs sont incomplets ou invalides.');
      }
    }
  }

Retour à La Une de Logo Paperblog

A propos de l’auteur


Ph3nol 38 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Magazines