Plus qu'un tutoriel vous retrouvez ici le détail du coeur du framework
Les entités permettent de manipuler facilement votre base de données. Une entité métier correspond à une table, il est possible de faire des liens entre les entités, facilitant ainsi vos développements
L'ide posséde un onglet entité vous permettant de créer automatiquement vos fichiers et script de base de données. La partie Field définie les champs que vous allez créer, la partie Key permet de faire des Foreign Key sur les autres tables.
La création de l'entité via l'ide va :
Ce système permet d'ajouter et supprimer des applications proprement et purger votre base de données
Exemple de l'entité d'article de blog
class BlogArticle extends Entity
{
//Entite lié
protected $Category;
//Constructeur
function __construct($core)
{
//Version
$this->Version ="2.0.0.0";
//Nom de la table
$this->Core=$core;
$this->TableName="BlogArticle";
$this->Alias = "BlogArticle";
$this->BlogId = new Property("BlogId", "BlogId", NUMERICBOX, true, $this->Alias);
$this->UserId = new Property("UserId", "UserId", NUMERICBOX, true, $this->Alias);
$this->Actif = new Property("Actif", "Actif", TEXTBOX, false, $this->Alias);
$this->Name = new Property("Name", "Name", TEXTBOX, true, $this->Alias);
$this->Code = new Property("Code", "Code", TEXTBOX, true, $this->Alias);
$this->KeyWork = new Property("KeyWork", "KeyWork", TEXTAREA, false, $this->Alias);
$this->Description = new Property("Description", "Description", TEXTAREA, false, $this->Alias);
$this->Content = new Property("Content", "Content", TEXTAREA, false, $this->Alias);
$this->DateCreated = new Property("DateCreated", "DateCreated", DATEBOX, false, $this->Alias);
$this->CategoryId = new Property("CategoryId", "CategoryId", NUMERICBOX, true, $this->Alias);
$this->Category = new EntityProperty("Apps\Blog\Entity\Blog\Category", "CategoryId");
//Creation de l entité
$this->Create();
}
/*
* Get the Name for url
*/
function GetUrlCode()
{
return Format::ReplaceForUrl($this->Code->Value, false);
}
/*
* Get the Image og the article
*/
function GetImage()
{
$fileName = "Data/Apps/Blog/".$this->BlogId->Value. "/".$this->IdEntite. "_96.png";
if(file_exists($fileName))
{
$image = new Image($this->Core->GetPath("/".$fileName));
$image->Title = $this->Name->Value;
}
else
{
$image = new Image($this->Core->GetPath("/images/nophoto.png"));
}
return $image->Show();
}
$this->Name = new Property("Name", "Name", TEXTBOX, true, $this->Alias);
Le constructeur de Property contient 4 paramétres :
Accès au valeur de l'objet
$article = new BlogArticle($this->Core);
$article->GetById(1);
echo $article->Name->Value;
Ce type de propriété permet de faire une liaison directe sur une entité lié.
Les entités liés sont chargés à la demande afin d'éviter les requêtes en base de données inutiles.
Exemple de déclaration
Ajout de la propriété dans la définition
//Entite lié
protected $Category;
Création de la liaison dans le constructeur
$this->Category = new EntityProperty("Apps\Blog\Entity\Blog\Category", "CategoryId");
Le constructeur d'EntityProperty attend deux paramétres
Exemple d'utilisation
echo $article->Category->Value->Name->Value;
Il est possible d'ajouter des fonctions qui vont effectuer certains traitements ou requêtes spécifiques
/*
* Get the Name for url
*/
function GetUrlCode()
{
return Format::ReplaceForUrl($this->Code->Value, false);
}
/*
* Get the Image og the article
*/
function GetImage()
{
$fileName = "Data/Apps/Blog/".$this->BlogId->Value. "/".$this->IdEntite. "_96.png";
if(file_exists($fileName))
{
$image = new Image($this->Core->GetPath("/".$fileName));
$image->Title = $this->Name->Value;
}
else
{
$image = new Image($this->Core->GetPath("/images/nophoto.png"));
}
return $image->Show();
}
/*
* Get A small Description
*/
function GetSmallDescription()
{
return Format::Tronquer($this->Description->Value, 250);
}
Appel des fonctions
$article->GetImage();
Vous pouvez également utiliser ces propriétés et fonction directement dans les vues .
{{foreach Articles}}
<div class='col-md-4'>
<div>
{{element->Category->Value->Name->Value}}
</div>
<div class='col-md-12' >
{{element->GetImage()}}
</div>
<div class='col-md-12'>
<h4>{{element->Name->Value}}</h4>
{{element->GetSmallDescription()}}
</div>
<div class='col-md-12'>
<a href='http://puzzleapp.org/Blog/Article/)}}{{element->GetUrlCode(' >Lire l´article </a>
</div>
</div>
{{/foreach Articles}}