Quick start avec la console
Note
Si vous n’aimez pas le mode console, vous pouvez passer au quick-start avec les webtools (UbiquityMyAdmin).
Composer installation
ubiquity utilise Composer pour gérer ses dépendances. Vous devrez donc vous assurer que vous avez Composer installé sur votre machine.
Installation d’Ubiquity devtools
Télécharger l’installeur Ubiquity-devtools avec Composer.
composer global require phpmv/ubiquity-devtools
Testez votre installation en faisant :
Ubiquity version
Vous pouvez obtenir à tout moment de l’aide sur une commande en tapant : Ubiquity help
suivi de ce que vous cherchez.
Exemple :
Ubiquity help project
Création de projet
Créer le projet quick-start
Ubiquity new quick-start
Structure des dossiers
Le projet créé dans le dossier quick-start a une structure simple et lisible :
Le dossier app contient le code de votre future application :
app
├ cache
├ config
├ controllers
├ models
└ views
Démarrage
Allez dans le dossier nouvellement créé quick-start et démarrez le serveur php intégré :
Ubiquity serve
Vérifier l’opération à l’adresse http://127.0.0.1:8090 :
Note
Si le port 8090 est occupé, vous pouvez démarrer le serveur en utilisant un autre port en utilisant l’option -p.
Ubiquity serve -p=8095
Contrôleur
L’application en mode console devtools permet de gagner du temps dans les opérations répétitives. Utilisons la pour créer un contrôleur.
Ubiquity controller DefaultController
Vous pouvez éditer le fichier app/controllers/DefaultController
dans votre IDE :
1namespace controllers;
2 /**
3 * Controller DefaultController
4 */
5class DefaultController extends ControllerBase{
6 public function index(){}
7}
Ajouter le message traditionnel, et tester votre page à l’adresse http://127.0.0.1:8090/DefaultController
class DefaultController extends ControllerBase{
public function index(){
echo 'Hello world!';
}
}
Pour l’instant, nous n’avons pas défini de routes,
L’accès à l’application se fait donc selon le schéma suivant :
controllerName/actionName/param
L’action par défaut est la méthode index, elle n’a pas besoin d’être spécifiée dans l’url.
Route
Important
Le routage est défini avec l’attribut Route
(avec php>8) ou l’annotation @route
et n’est pas fait dans un fichier de configuration :
c’est un choix de conception.
Le paramètre automated mis à true permet aux méthodes de notre classe d’être définies comme des sous routes de la route principale /hello
.
Avec annotations :
1namespace controllers;
2/**
3 * Controller DefaultController
4 * @route("/hello","automated"=>true)
5 */
6class DefaultController extends ControllerBase{
7
8 public function index(){
9 echo 'Hello world!';
10 }
11
12}
Avec attributs (php>8) :
1namespace controllers;
2use Ubiquity\attributes\items\router\Route;
3
4#[Route('/hello', automated: true)]
5class DefaultController extends ControllerBase{
6
7 public function index(){
8 echo 'Hello world!';
9 }
10
11}
Cache du routeur
Important
Aucune modification sur les routes n’est effective sans initialiser le cache.
Les annotations ne sont jamais lues au moment de l’exécution. C’est également un choix de conception.
Nous pouvons utiliser la console pour ré-initialiser le cache :
Ubiquity init-cache
Vérifions que la route existe :
Ubiquity info:routes
Nous pouvons maintenant tester la page http://127.0.0.1:8090/hello
Action et route avec paramètres
Nous allons maintenant créer une action (sayHello) avec un paramètre (name), et la route associée (to) :
La route utilisera le paramètre name de l’action :
Ubiquity action DefaultController.sayHello -p=name -r=to/{name}/
Après ré-initialisation du cache (commande init-cache), la commande info:routes devrait afficher :
Changer le code dans votre IDE : l’action doit dire hello à quelqu’un (somebody)…
/**
* @route("to/{name}/")
*/
public function sayHello($name){
echo 'Hello '.$name.'!';
}
et tester la page http://127.0.0.1:8090/hello/to/Mr SMITH
Action, route, paramètres et vue
Nous allons maintenant créer une action (information) avec deux paramètres (titre et message), la route associée (info), et une vue pour afficher le message :
La route utilisera les deux paramètres de l’action.
Ubiquity action DefaultController.information -p=title,message='nothing' -r=info/{title}/{message} -v
Note
Le paramètre -v (–view) est utiliser pour créer la vue associée à l’action.
Après ré-initialisation du cache, nous devrions avoir 3 routes :
Retournons à notre environnement de développement pour voir le code généré :
/**
* @route("info/{title}/{message}")
*/
public function information($title,$message='nothing'){
$this->loadView('DefaultController/information.html');
}
Nous devons passer les 2 variables à la vue :
/**
* @route("info/{title}/{message}")
*/
public function information($title,$message='nothing'){
$this->loadView('DefaultController/information.html',compact('title','message'));
}
Et utiliser ces 2 variables dans la vue twig associée :
<h1>{{title}}</h1>
<div>{{message | raw}}</div>
Nous pouvons tester votre page à l’addresse http://127.0.0.1:8090/hello/info/Quick start/Ubiquity est super simple
une évidence.