Comment renouveler sa licence développeur sur Windows 8 ?

bonjour,

Ces dernier temps je suis tombé sur un problème épineux sur windows 8 : ma licence développeur est arrivé à son terme ! pas de soucis  il est possible en commande powershell de renouveler cette dernière.

AcquireDeveloperLicense  // permet d’en avoir une autre

CheckDeveloperLicense // permet de retourner true ou false si votre clés est expirer

RemoveDeveloperLicense // vous supprimer une clés

n’oubliez pas aussi implementer cette dll : wsclient.dll si vous avez des erreurs

pour le reste voici le lien qui ma sauvé  !

http://msdn.microsoft.com/fr-fr/library/windows/apps/hh696646(v=vs.110).aspx

Comment faire un formulaire avec Symfony 2 ?

Bonsoir,

Nous allons dans ce tutoriel faire un formulaire. Pas d’inquiétude « tout va bien ce passer » tout abord nous allons étudier les principes puis passé à la pratique.

Mais rien de méchant !

Premièrement pour comprendre comment créer un formulaire, il faut s’intéresser aux entités et comment nous les « remplissons » en informations ce principe de « remplir » s’intitule « Hydrater » sous Symfony 2. Retenez bien ce terme qui pourra souvent vous aider.

Et qui entre nous explique bien comment nous allons créer par des formulaires de nouveaux objets.

Pour comprendre pourquoi on parle d’hydratation il faut comprendre comment on déclare un formulaire :

  1. j’instancie un objet de mon entité vide.
  2. J’instancie mon formulaire en passant comme paramètre mon objet .

Avec le schéma ci-dessus c’est peut être plus parlant.

Donc maintenant on comprend mieux pourquoi on appelle cela hydrater ! .

Il existe plusieurs moyen de créer un formulaire avec Symfony 2. Je vais donc vous les énumérer une par une en essayant au maximum de vous les expliquer de façon optimum.

La première : tout dans le contrôleur

Dans cette méthode la création et les actions du formulaire serons pris en charge par le controller.

$monObjetAHydrater = new monObjetAHydrater() ; // ici nous créeons donc notre objet dit sec ^^

$constructeurDeFormulaire = $this->createFormBuilder($monObjetAHydrater) ;

$constructeurDeFormulaire->add(‘votreProprieteAHydrater’, ‘typeDeField’) ;

NB : je me permet ici de faire un nota bene pour expliquer quelque points qui me paraissent interessant d’approfondir. La première est tout d’abord la fonction add(), que fait-elle ? Elle créer les champ de votre formulaire mais attention les champ que vous rentrer dans add() doivent être « mapper » par l’objet que vous avez donnez dans votre createFormBuilder(). La vous vous ditent oui mais si je veux en créer un autre ? Pas de soucis Symfony 2 n’est pas si bête ^^ il a créer une propriété de son objet FIELD qui vous permet de créer des champ non-mapper par un objet : property_path et de mettre à false

$constructeurDeFormulaire->add(‘votreProprieteAHydrater’, ‘typeDeField’, array(

‘property_path’=> false,

)

) ;

La seconde astuce réside dans les types de champs dont voici la liste complète [lien]. Je ferais peut être un autre tuto pour les type entity qui mérite vraiment qu’on s’y intéresse d’avantage.

Bon après ce volumineux NB revenons à nos moutons.

Toujours dans votre contrôleur vous allez continuez avec ce qui suit :

// nous allons récupérer la requête http qui est ou sera soumisse a votre action

$requete = $this->get(‘request’) ; // pour ceux qui ne serais plus comment ça fonction aller voir sur google

// maintenant nous allons soumettre la requête

if($requete->getMethod() == ‘post’)

{

// nous allons ici remplir notre formulaire est donc notre entity avec la requête http

$constructeurDeFormulaire->bindRequest($request) ;

// nous allons vérifier grâce à notre entity si notre requête respect les critères de validation de notre objet

if($constructeurDeFormulaire->isValid())

{

// nous allons utiliser Entity manager pour persister notre objet (le sauvegarder dans une base)

$entityManager = $this->getDoctrine()->getEntityManager() ;

$entityManager->persiste($monObjetAHydrater) // la je sens que certain ce disent « l’est juste instancier ! » eh ben non avec bindRequest nous l’avons « hydrater »

$entityManager->flush() ;

// la après à vous de voir pour la redirection ^^

}

}

Donc ça c’était la méthode pas très optimisé. Mais cependant je pense qu’il est nécessaire d’expliquer ce que fait le formulaire.

Comme on la vue nous instancions un objet entity puis on y touche plus c’est notre formulaire avec les fonctions add(), isValid() et bindRequest qui va tout faire, c’est pas fantastique !

La deuxième méthode qui à mon goût est plus « best pratrice » : Utilisation d’un objet TYPE et HANDLER

Pour cette méthode nous allons devoir modifier quelque peu l’arborescence de votre projet.

Oui nous allons devoir créer un nouveau répertoire intitulé « Form » qui contiendra tout vos formulaire et leur action.

La aussi avant d’ouvrir les hostilité nous allons voir un peu qui est quoi et comment ça marche.

Souvenez – vous de la première parti on avait préciser qu’il fallait hydrater un objet avec un formulaire qui va utiliser l’objet instancier pour valider et mapper l’objet en question et ben là c’est la même choses.

Sauf que ici nous allons le faire grâce à deux autres objet : un handler et son type, comprenez ici surtout formulaire et son action.

Qui fait quoi ? Tout d’abord le formulaire est un objet qui devra étendre AbstractType. Le formulaire contiendra le structure de votre formulaire (donc les champs). Le handler quant a lui, il est charger de récupérer le formulaire rempli de le binder dans l’objet tout en le validant avant de le persister (ou enregistrer dans la base).

je pense qu’avec le schéma ça paraît un peu plus clair !

Maintenant que nous connaissons la théorie voici en pratique ce que cela donne.

Dans l’ojbet formulaireType.php contenu dans le répertoire src/Namespace/MonBundle/Form/

<?php

namespace Namespace\Monbundle\Form ;

use Symfony\Component\Form\AbstractType ;

use Symfony\Component\Form\FormBuilder;

class MonFormulaireType extends AbstractType()

{

public function buildForm(FormBuilder $builder, array $options)

{

$builder->add(‘Monchamp’, ‘typeDeChamp’) ;

}

public function getName()

{

return ‘namespace_monbundle_monformulaireType’ ;

}

public function getDefaultOptions(array $options)

{

return array(

‘data_class’ => ‘Namespace\MonBundle\Entity\MonEntity’,

) ;

}

}

?>

Alors ici on vois que notre objet MonFormulaire est constituer de trois méthodes. Nous allons les expliquer un peu.

buildForm(FormBuilder $builder, array $options) permet de construire en quelque sorte votre formulaire c’est ici que vous allez définir ces champs par exemple.

GetName() sera utiliser par la suite par un autre fichier dont je ne parlerais pas tout de suite pour ne pas vous embrouiller.

Maintenant que nous avons créer le formulaire nous allons devoir créer un handler qui lui sera lié plus tard. Qu’est ce que ce Handler ? Comme nous avons vu plus haut dans la méthode précédentes nous faisions la vérification, binding et la persistance dans la base. Tout cela ce trouver dans la base est bien là nous allons aussi externaliser cette partie dans objet : un Handler.

Le Handler aura donc comme but de vérifier que les champs entrez sont bien conforme à l’objet et l’ajoutera à notre base tout seul. C’est pas magique !

pour ce faire on fait comme cela

<?php

namespace NameSpace\MonBundle\Form;

use Symfony\Component\Form\Form;

use Symfony\Component\HttpFoundation\Request;

use Doctrine\ORM\EntityManager;

use Namespace\MonBundle\Entity\MonEntity;

class MonHandler

{

protected $em;                        // ici c’est notre entityManager qui gère la persistance de notre objet dans notre base

protected $form;                  // ici c’est notre formulaire qui contient notre objet à hydrater

protected $request;           // ici c’est notre requête qui contient nos données

public function __constructor( Form $form, EntityManager $em, Request $request)

{

$this->form = $form;

$this->em = $em;

$this->request = $request;

}

public function process()

{

if($this->request->getMethod() == ‘POST’)                  // vous pouvez remplacer par le Méthod http GET ^^

{

$this->form->bindRequest($this->request);  // on bind notre requête dans notre formulaire pour « hydrater » notre objet

if($this->form->isValid())                                      // le formulaire est bien valide == true

{

$this->onSuccess($this->form->getData())  // je vais persister l’objet ou effectuer un action sur celui-ci dans la méthode onSuccess()

return true;

}

return false;

}

public function onSuccess(MonEntity $entity)

{

$this->em->persist($entity);                      // ici on va ajouter notre objet à la base de données

$this->em->flush();                                          // ici on va rafraîchir la base ou actualisez pour valider nos ajout et modification;

}

}

?>

Voici donc comment on effectue un handler si vous avez bien compris cet exemple vous devriez vous en sortir plus le refaire :p

Maintenant nous allons voir du côté du contrôleur ce que l’on doit faire pour lié tout ça !

// Dans votre controller

// Atention on oublie pas les usings

use Namespace\MonBundle\Form\MonType;

use Namespace\MonBUndle\Form\MonHandler;

$MonEntity = new Entity();                    // Comme à chaque fois j’instancie mon objet à hydrater

$form =  $this->createForm(new Montype(), $MonEntity);     // nous créons notre formulaire grâce au type

$formHandler = new MonHandler( $form, $this->getDoctrine()->getEntityManager(), $this->get(‘request’));

// la on lie le tout  à notre handler qui se chargera de vérifier, binder et persister l’entité.

if($formHandler->proccess())

{

// redirection ou action si valide et persister par exemple  ^^ a vous de voir ce que vous voulez faire

}

return $this->render(‘MonBundle:Moncontroller:lavueFormulaire.html.twig’, array(

‘form’ => $form->CreateView(),

));

// ici nous disons que si on procède pas au handler alors on affiche le formulaire pour le remplir

voilà on a tout fait ! …. FAUX ! et l’affichage du formulaire chères amis !

dans vos vues rattacher au controller sur lequel vous venez de créer l’action avec le super formulaire, vous allez creer un vue pour affciher le formulaire.

bon je vous montre un truc rapide mais vraiment tout moche :p

// Ma super vue 😉

<html>

<head>

<title> Mon formulaire externalisé </title>

</head>

<body>

<!– bon la on utilise des div et des p car les tableaux ce n’est plus best pratrice je le rappelle –>

<div id=’form’>

<form {{form_entType()}}>

<!– IMPORTANT pour éviter le CSRF et que votre formulaire passe –>

{{form_widget(form._token)}}

<!– Là je fais un un exmple explique que pour un après c’est pareil ^^ –>

<p class= »row »>

<label>{{form_label(form.Field, ‘mon label’)</label>

{{form_widget(form.Field)}} {{form_errors(form.Field)}}

</p>

</form>

</div>

</body>

</html>

Et voilà vous avez un formulaire opérationel !

Je tiens à vous rappeler si ce n’est pas déjà fait qu’un formulaire comme fait dans la deuxième méthode peut être réutilisé plusieurs fois par exemple pour la création et la modification : c’est l’un des avantages à faire cela :p

Donc petit conseil qui n’engage que moi : réfléchissez bien vos formulaire et comme ça vous éviterez du code qui n’est pas nécessaire de refaire !

Pour la validation avec les contrainte je ferais peut être un autre tuto car je pense que celui-ci est déjà bien rempli :p

Cordialement.

Josselin

Evénement : JPO & Open labs « open source »

Bonsoir,

 

Petit message pour vous tenir au courant d’une chose intéressante le campus supinfo vous ouvres c’est portes le samedi 12 mai. Au menu des réjouissance :

– Visites du campus et rencontre pour mieux connaître supinfo.

– Conférence sur le framework Symfony 2  présenter par moi.

–  Rencontre avec MamyTwink (pour ceux qui joue a wow).

et encore plein d’autre choses.

 

Alors venais Nombreux et nombreuse nous rencontrer !