Tutoriel : Le framework puzzleApp

Plus qu'un tutoriel vous retrouvez ici le détail du coeur du framework

Les model

Les modèles sont une couche entre votre controller et votre vue. Ils permettent de manipuler vos entités plus rapidement et simplement. Un model peut contenir une ou plusieurs entités.

Exemple d'un modéle permettant la sauvegarde

 

1. Définition du modèle 

/*
 * PuzzleApp
 * Webemyos
 * Jérôme Oliva
 * GNU Licence
 */
namespace Apps\Forum\Modele;

use Apps\Forum\Entity\ForumCategory;
use Core\Modele\Modele;
use Core\Utility\Date\Date;

class MessageModele extends Modele
{
    /*
     * Category of the message
     */
    private $category;
    
    /*
     * Constructeur
     */
    public function __construct($core)
    {
       $this->Core = $core;
        
       $entityName = "Apps\Forum\Entity\ForumMessage";
       $this->Entity = new $entityName($core);
    }
    
    /*
     * Set The category
     */
    public function SetCategory($category)
    {
       $this->category = $category;
    }
    
    /*
     * Prepare the form
     */
    public function Prepare()
    {
        $this->Exclude(array("CategoryId", "UserId", "DateCreated"));
    }
    
    /*
     * Save/update the entity 
     */
    public function Updated()
    {
        $this->Entity->CategoryId->Value = $this->category->IdEntite;
        $this->Entity->UserId->Value = $this->Core->User->IdEntite;
        $this->Entity->DateCreated->Value = Date::Now();
       
        parent::Updated();
    }
}

Le constructeur 

Dans le constructeur il faut déclarer l'entité que vous allez utiliser

Ajouter vos fonctions utiles, dans notre cas nous avons besoin de la catégorie, elle est donc initialiser via la fonction SetCategory

 

La fonction Prepare 

La fonction Excude permet d'exclure les champs de votre entité que vous ne souhaitez pas proposer à l'utilisateur

 

La fonction Updated

La fonction update est appelé automatiquement , vous pouvez alors définir des propriétés spécifiques. Enfin le parent::Updated va créer automatiquement votre entité

 

2. Utilisation dans le controller 

/*
 * Inscription to the newletters
 */
 public function Subscribe()
 {
   $this->Core->MasterView->Set("Title", $this->Core->GetCode("Blog.Subscribe") );
       
   $view = new View(__DIR__."/View/subscribe.tpl", $this->Core);

   //Add Message Modele
   $modele = new UserNewletterModele($this->Core);
   $view->SetModel($modele);

    return $view->Render();
 }

 

3. Dans la vue 

 

<section>
      <h2>S´inscrire</h2>

        {{if Model->State = Init}}
            {{RenderModel()}}
        {{/if Model->State = Init}}

        {{if Model->State = Updated}}

        <div class='success'>
          Inscroption validé
        </div>

        <a class='btn btn-success' href='http://puzzleapp.org/Blog' >
            Retourner au forum
        </a>

        {{/if Model->State = Updated}}
   
</section>

 

Comme vous pouvez le constater le model a des états qui vous permettent d'afficher des élements différents selon que l'on arrive sur le formulaire ou que l'enregistrement c'est bien déroulé