gbtux/inertia-bundle

Inertia Bundle with Vite for Symfony > 7

Installs: 0

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Type:symfony-bundle

pkg:composer/gbtux/inertia-bundle

dev-main 2025-12-30 09:15 UTC

This package is auto-updated.

Last update: 2025-12-30 09:23:29 UTC


README

Symfony 7.0+ PHP 8.2+ License

Ce bundle intègre de manière fluide Inertia.js dans vos applications Symfony. Créez des applications "Single Page" (SPA) modernes en utilisant les contrôleurs Symfony et vos composants React préférés, sans la complexité d'une API REST ou GraphQL.

🚀 Installation

Suivez ces étapes pour configurer votre projet Symfony avec InertiaJS.

1. Prérequis : Un projet propre

Il est recommandé de partir sur une base sans les outils "Hotwire" par défaut de Symfony pour éviter les conflits. Créez votre projet sans Stimulus ni Turbo :

symfony new my_project
#ou
composer create-project symfony/skeleton my_project

Assurez-vous également que votre environnement dispose d'une version récente de Node.js :

  • Node.js > 22 est requis.

2. Installation du Bundle

Installez le package via Composer :

composer require gbtux/inertia-bundle

Important

En cas d'erreur lors de l'installation : Si vous rencontrez un problème lié au FOSJsRoutingBundle, vérifiez que votre fichier config/routes/fos_js_routing.yaml contient bien la configuration suivante :

fos_js_routing:
    resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.php"

Une fois vérifié, relancez la commande composer require gbtux/inertia-bundle.

3. Initialisation automatique

Le bundle inclut une commande pour configurer automatiquement l'arborescence, les fichiers Vite, les templates et les routes :

php bin/console inertia:install

4. Lancement du projet

Ouvrez un terminal pour démarrer vos serveurs :

Serveur Symfony

symfony serve -d

Compilation des Assets (Vite)

npm run dev

💡 Utilisation

Dans votre Contrôleur

Héritez de Gbtux\InertiaBundle\Controller\AbstractController; pour accéder à la méthode renderInertia.

// src/Controller/HomeController.php
namespace App\Controller;

use Gbtux\InertiaBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;

class HomeController extends AbstractController
{
    #[Route('/', name: 'app_home')]
    public function index()
    {
        return $this->renderInertia('Home', [
            'user' => $this->getUser()?->getUserIdentifier(),
            'version' => '1.0'
        ]);
    }
}

Côté Frontend (React)

Inertia transmet automatiquement les données de Symfony comme des props.

import React from "react";
import { Head } from "@inertiajs/react";

export default function AboutPage() {
    return (
        <>
            <Head title="About Us" />
            <h1>About Us</h1>
            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
        </>
    );
}

🔗 Shared Data (Données Partagées)

Vous pouvez partager des données automatiquement avec tous vos composants (comme l'utilisateur connecté ou les messages flash) via un EventListener ou en surchargeant la configuration. Par défaut, le bundle gère les messages flash de Symfony :

// Dans n'importe quel composant, accédez aux flash messages
const flash = usePage().props.flash;

🛠️ Fonctionnalités

  • Zero-config : La commande inertia:install s'occupe de tout.
  • Routing : Intégration native avec FOSJsRoutingBundle pour utiliser vos routes Symfony en JS.
  • Vite : Configuration moderne optimisée pour les performances.

🤝 Contribution

Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une Issue ou à soumettre une Pull Request.

📄 Licence

Ce bundle est sous licence MIT.

Fait avec ❤️ par Gbtux