﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Alexandre JULIEN &#187; zend_validate</title>
	<atom:link href="http://www.alexandre-julien.com/tag/zend_validate/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alexandre-julien.com</link>
	<description>Industrialisation des développements, PHP, .NET, jQuery, HTML5, Web, …</description>
	<lastBuildDate>Sun, 22 Jan 2012 20:26:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Zend Framework tutoriel #4 : Création de formulaire et validations avec Zend_Form et Zend_Validate</title>
		<link>http://www.alexandre-julien.com/php/zend-framework-php/zend-framework-tutoriel-4-creation-de-formulaire-et-validations-avec-zend_form-et-zend_validate/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=zend-framework-tutoriel-4-creation-de-formulaire-et-validations-avec-zend_form-et-zend_validate</link>
		<comments>http://www.alexandre-julien.com/php/zend-framework-php/zend-framework-tutoriel-4-creation-de-formulaire-et-validations-avec-zend_form-et-zend_validate/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 19:30:30 +0000</pubDate>
		<dc:creator>Alexandre JULIEN</dc:creator>
				<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[formulaire]]></category>
		<category><![CDATA[validateur]]></category>
		<category><![CDATA[zend]]></category>
		<category><![CDATA[zend_form]]></category>
		<category><![CDATA[zend_validate]]></category>
		<category><![CDATA[zf]]></category>

		<guid isPermaLink="false">http://www.alexandre-julien.com/?p=763</guid>
		<description><![CDATA[
Zend Framework possède son propre outil pour gérer les formulaires correctement : Zend_Form est là pour ça !
Il s&#8217;agit d&#8217;une librairie qui gère vos composants de formulaires (y compris leur rendu), les validations, le filtrage des données, et la gestion de sous-formulaires.
La librairie  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alexandre-julien.com/wp-content/uploads/2009/09/forms.jpg"><img class="size-medium wp-image-766 aligncenter" title="forms" src="http://www.alexandre-julien.com/wp-content/uploads/2009/09/forms-300x227.jpg" alt="forms" width="300" height="227" /></a></p>
<p>Zend Framework possède son propre outil pour gérer les formulaires correctement : Zend_Form est là pour ça !<br />
Il s&#8217;agit d&#8217;une librairie qui gère vos composants de formulaires (y compris leur rendu), les validations, le filtrage des données, et la gestion de sous-formulaires.<br />
La librairie Zend_Validate qui gère les validateurs sera aussi utiliser dans ce tutoriel afin d&#8217;illustrer les validations de formulaire et ce de façon personnalisé.</p>
<p><span id="more-763"></span></p>
<p>Tout d&#8217;abord nous allons voir les principes basiques des formulaires avec Zend Framework : <strong>il nous faudra ajouter un dossier &laquo;&nbsp;forms&nbsp;&raquo; dans notre répertoire &laquo;&nbsp;application&nbsp;&raquo;</strong>.</p>
<p><a href="http://www.alexandre-julien.com/wp-content/uploads/2009/09/forms_folder.png"><img class="aligncenter size-full wp-image-770" title="forms_folder" src="http://www.alexandre-julien.com/wp-content/uploads/2009/09/forms_folder.png" alt="forms_folder" width="377" height="133" /> </a></p>
<p>Voici un premier example de la création d&#8217;un formulaire dans notre fichier &laquo;&nbsp;Author.php&nbsp;&raquo;. Il s&#8217;agit d&#8217;une classe qui correspondra à un formulaire d&#8217;inscription d&#8217;un auteur :</p>
<pre class="brush: php; title: ; notranslate">
class Form_Author extends Zend_Form
{
  /**
   * Surcharge du constructeur du formulaire
   */
  public function __construct($options = null)
  {
    parent::__construct($options = null)
    $this-&gt;setName('subscription'); // On nomme le formulaire

    $id = new Zend_Form_Element_Hidden('id'); // On rajoute un champs caché

    $email = new Zend_Form_Element_Text('email');
    $email-&gt;setRequired(true)
          -&gt;setLabel('Veuillez saisir votre e-mail');

     // Nous avons rajouter un attribut obligatoire à notre email et nous lui avons donné un libellé avant le champs texte

    // Ensuite on peut insérer les composants (elements) dans le formulaire
    $this-&gt;addElements($id, $email);

  }
}
</pre>
<p>Nous avons réaliser une ébauche de formulaire, pour l&#8217;utiliser dans notre contrôleur et vue, rien de plus simple</p>
<p>AuthorController.php</p>
<pre class="brush: php; title: ; notranslate">

function suscribeAction ()

{

$form = new Form_Author(); // On instancie le formulaire

$this-&gt;view-&gt;form = $form // On le renvoie à la vue

}

// Pour l'éditer il faut renvoyer les informations au formulaire

function editsubscriptionAction()

{

$form = new Form_Author();

$model = new Model_DbTable_Author();

$data = $model-&gt;getAuthor('5'); // On récupère toutes les données d'un auteur dans la base de données

$form-&gt;populate ($data); // On propulse les données dans le formulaire

$this-&gt;view-&gt;form = $form;

}
</pre>
<p>Ensuite dans la vue, on affiche le formulaire et on définit son action :</p>
<p>Author.phtml</p>
<pre class="brush: php; title: ; notranslate">
echo $this-&gt;form;
$this-&gt;form&gt;setAction(author/save); // On définit l'action qui récupère le formulaire
</pre>
<p>Voici un exemple beaucoup plus complet d&#8217;un formulaire avec des validateurs, internationalisation et un captcha :</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
class Form_Author extends Zend_Form
{
public function __construct($options = null)
{
parent::__construct($options);
$this-&gt;setName('Subscription');
$id = new Zend_Form_Element_Hidden('id');

$translate = Zend_Registry::get('translate');

$emptyValidator = new Zend_Validate_NotEmpty();
$emptyValidator-&gt;setMessage($translate-&gt;_(&quot;Ce champs est vide : vous devez le compléter&quot;));

$emailValidator = new Zend_Validate_EmailAddress();
$emailValidator-&gt;setMessage($translate-&gt;_('L\'adresse email n\'est pas valide'));

$primaryValidator = new Zend_Validate_Db_NoRecordExists('users', 'username');
$primaryValidator-&gt;setMessage($translate-&gt;_(&quot;L'adresse email a déjà été utilisée&quot;), Zend_Validate_Db_Abstract::ERROR_RECORD_FOUND);

$stringLengthValdiator = new Zend_Validate_StringLength(6, 12);
$stringLengthValdiator-&gt;setMessage($translate-&gt;_('La longueur du mot de pase doit être comprise entre 6 et 12 caractères'));

$email = new Zend_Form_Element_Text('email');
$email-&gt;setLabel($translate-&gt;_('Email'))
-&gt;setRequired(true)
-&gt;addFilter('StripTags')
-&gt;addFilter('StringTrim')
-&gt;addValidator($emailValidator)
-&gt;addValidator($primaryValidator)
-&gt;addValidator($emptyValidator);

$password = new Zend_Form_Element_Password('password');
$password-&gt;setLabel($translate-&gt;_('mot de passe'));
$password-&gt;addValidator($stringLengthValdiator);
$password-&gt;addValidator($emptyValidator);

$password_verification = new Zend_Form_Element_Password ('password_confirm');
$password_verification-&gt;setLabel ($translate-&gt;_('retapez le mot de passe pour vérification'));
$password_verification-&gt;addValidator($emptyValidator);
if (isset($_POST['password'])) {
$passwordVerificationValidator = new Zend_Validate_Identical($_POST['password']);
$passwordVerificationValidator-&gt;setMessage($translate-&gt;_('Les mots de passe ne correspondent pas'));
$password_verification-&gt;addValidator($passwordVerificationValidator);
}

$sex = new Zend_Form_Element_Radio('sex', array('separator' =&gt; ' '));
$sex-&gt;setMultiOptions (array('male' =&gt; 'Homme', 'female' =&gt; 'Femme '))
-&gt;setLabel($translate-&gt;_('Sexe'))
-&gt; isRequired(true);

$name = new Zend_Form_Element_Text('name');
$name-&gt;setLabel($translate-&gt;_('Prénom'))
-&gt;setRequired(true)
-&gt;addFilter('StripTags')
-&gt;addFilter('StringTrim')
-&gt;addValidator($emptyValidator);

$surname = new Zend_Form_Element_Text('surname');
$surname-&gt;setLabel($translate-&gt;_('Nom'))
-&gt;setRequired(true)
-&gt;addFilter('StripTags')
-&gt;addFilter('StringTrim')
-&gt;addValidator($emptyValidator);

$address = new Zend_Form_Element_Text('address_author');
$address-&gt;setLabel($translate-&gt;_('Adresse'))
-&gt;setRequired(true)
-&gt;addFilter('StripTags')
-&gt;addFilter('StringTrim')
-&gt;addValidator($emptyValidator);

$zip_code = new Zend_Form_Element_Text('zip_code_author');
$zip_code-&gt;setLabel($translate-&gt;_('Code Postal'))
-&gt;setRequired(true)
-&gt;addFilter('StripTags')
-&gt;addFilter('StringTrim')
-&gt;addValidator($emptyValidator);

$city = new Zend_Form_Element_Text('city_author');
$city-&gt;setLabel($translate-&gt;_('Ville'))
-&gt;setRequired(true)
-&gt;addFilter('StripTags')
-&gt;addFilter('StringTrim')
-&gt;addValidator($emptyValidator);

$phone = new Zend_Form_Element_Text('phone');
$phone-&gt;setLabel($translate-&gt;_('Téléphone'))
-&gt;setRequired(true)
-&gt;addFilter('StripTags')
-&gt;addFilter('StringTrim')
-&gt;addValidator($emptyValidator);

}

$submit = new Zend_Form_Element_Submit('valid');
$submit-&gt;setAttrib('id', 'submitbutton')
-&gt;setLabel($translate-&gt;_('Enregistrer l\'annonce'));

 $this-&gt;addElements(array($id, $email,$password, $password_verification, $sex, $name, $surname, $address, $zip_code, $city, $phone, $submit));
}
}
?&gt;
</pre>
<p>Dans le prochaine tutorial, nous verrons comment mettre en application tout ce que nous avons vu précédemment dans un &laquo;&nbsp;CRUD&nbsp;&raquo; (Create Read Update Delete) qui illustrera l&#8217;utilisateur du design-pattern MVC, Zend_Db, Zend_Form, Zend_Validate et Zend_Layout.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexandre-julien.com/php/zend-framework-php/zend-framework-tutoriel-4-creation-de-formulaire-et-validations-avec-zend_form-et-zend_validate/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 1/5 queries in 0.044 seconds using disk: basic
Object Caching 669/669 objects using disk: basic

Served from: www.alexandre-julien.com @ 2012-02-18 14:06:31 -->
