Démarrage rapide
Construisez une page Produits minimale en cinq minutes — contrôleur, vue, entrée de navigation.
À la fin de cette page, vous aurez une page /produits fonctionnelle rendue par Smarty, alimentée par un contrôleur et listée dans le panneau latéral.
1. Générer un contrôleur
Section intitulée « 1. Générer un contrôleur »./nibiru -c productsCela crée deux fichiers :
application/controller/productsController.phpapplication/view/templates/products.tpl2. Connecter le contrôleur
Section intitulée « 2. Connecter le contrôleur »Ouvrez productsController.php et remplacez le corps par :
<?phpnamespace Nibiru;use Nibiru\Adapter\Controller;
class productsController extends Controller{ public function pageAction() { View::assign([ 'title' => 'Products — Nibiru', 'products' => [ ['id' => 1, 'name' => 'Marduk Gold Plating', 'price' => 99.0], ['id' => 2, 'name' => 'Tiamat Hull Sealant', 'price' => 49.0], ['id' => 3, 'name' => 'Anu Stardust Polish', 'price' => 19.5], ], 'css' => Config::getInstance()->getConfig()[View::NIBIRU_SETTINGS]['smarty.css'], 'js' => Config::getInstance()->getConfig()[View::NIBIRU_SETTINGS]['smarty.js'], ]); }
public function navigationAction() { JsonNavigation::getInstance()->loadJsonNavigationArray(); }}Deux méthodes sont conventionnelles et appelées toujours par le dispatcheur:
navigationAction()— remplit le menu de navigation global.pageAction()— rend la page elle-même.
Tout ce qui correspond à ?_action=foo appellera en outre une méthode fooAction() entre eux.
3. Écrire la vue
Section intitulée « 3. Écrire la vue »Ouvrez application/view/templates/products.tpl:
{include 'shared/header.tpl'}<body>{include file="navigation.tpl"}
<main class="container"> <h1>{$title}</h1>
<table class="table"> <thead> <tr><th>#</th><th>Name</th><th>Price</th></tr> </thead> <tbody> {foreach $products as $p} <tr> <td>{$p.id}</td> <td><a href="/products/detail/{$p.id}">{$p.name|escape}</a></td> <td>{$p.price|string_format:"%.2f"} €</td> </tr> {/foreach} </tbody> </table></main>
{include 'shared/footer.tpl'}</body>Les variables transmises à View::assign() apparaissent sous la forme {$variable} dans Smarty.
4. Ajouter une entrée de navigation
Section intitulée « 4. Ajouter une entrée de navigation »Modifiez application/settings/config/navigation/main.json et ajoutez :
{ "label": "Products", "href": "/products", "icon": "shopping-bag"}La navigation est chargée par JsonNavigation et rendue par navigation.tpl.
5. Exécutez-le
Section intitulée « 5. Exécutez-le »Si vous avez le serveur intégré de PHP à portée de main :
APPLICATION_ENV=development php -S localhost:8080 -t .Visitez http://localhost:8080/products/. Vous devriez voir vos trois produits avec le thème cosmique de votre CSS.
Ajouter une page détaillée
Section intitulée « Ajouter une page détaillée »Dans le même contrôleur :
public function detailAction(){ $id = (int) ($_REQUEST['id'] ?? 0); View::assign([ 'title' => "Product #$id", 'id' => $id, ]);}Le Router comprend déjà /produits/détail/42 et /produits/marduk-gold-plating/42 (forme d’URL SEO — id et slug sont automatiquement remplis dans $_REQUEST).
Créez application/view/templates/products/detail.tpl avec n’importe quel balisage que vous souhaitez, et vous avez une application à deux pages.
Où aller ensuite ?
Section intitulée « Où aller ensuite ? »- Architecture (MMVC) — comment tous les éléments fonctionnent ensemble.
- Modules — quand passer d’un contrôleur et des traits à un vrai module.
- Base de données & Migrations — connecter la page à une table
productsréelle.