PHPackages                             gbtux/inertia-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Templating &amp; Views](/categories/templating)
4. /
5. gbtux/inertia-bundle

ActiveSymfony-bundle[Templating &amp; Views](/categories/templating)

gbtux/inertia-bundle
====================

Inertia Bundle with Vite for Symfony &gt; 7

03PHP

Since Feb 2Pushed 3mo agoCompare

[ Source](https://github.com/gbtux/inertia-bundle)[ Packagist](https://packagist.org/packages/gbtux/inertia-bundle)[ RSS](/packages/gbtux-inertia-bundle/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

InertiaBundle for Symfony 7/8
=============================

[](#inertiabundle-for-symfony-78)

[![Symfony 7.0+](https://camo.githubusercontent.com/bb4684cfd656826207cdc12cb4b82db4470e9310a0c4589fe95e907c5a63574f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53796d666f6e792d372e78253230253246253230382e782d626c756576696f6c65742e7376673f7374796c653d666c61742d737175617265)](https://symfony.com)[![PHP 8.2+](https://camo.githubusercontent.com/6d0e63bb9482df87aa6c6ea983969a625be703cd8cfc3460c99eb1e582e6b46f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d626c75652e7376673f7374796c653d666c61742d737175617265)](https://php.net)[![License](https://camo.githubusercontent.com/6c711032aff1ca0eb6b211aa6cb3649ce7fd64a7714e1181d4bb457f9680e7cf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e2e7376673f7374796c653d666c61742d737175617265)](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
--------------

[](#-installation)

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

### 1. Prérequis : Un projet propre

[](#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 &gt; 22** est requis.

### 2. Installation du Bundle

[](#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

[](#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

[](#4-lancement-du-projet)

Ouvrez un terminal pour démarrer vos serveurs :

**Serveur Symfony**

```
symfony serve -d

```

**Compilation des Assets (Vite)**

```
npm run dev

```

---

Configuration de ShadCN
-----------------------

[](#configuration-de-shadcn)

Le bundle peut directement configurer tout l'outillage pour utiliser Shadcn. Pour cela, **uniquement après avoir initialiser le bundle avec la commande inertia:install**:

```
php bin/console inertia:configure-shadcn

```

Vous pouvez maintenant installer n'importe quel composant dans votre projet comme par exemple un bouton:

```
npx shadcn@latest add button

```

Puis l'utiliser:

```
import { Button } from "@/components/ui/button"

export default function HomePage({ name }) {
    return (

            Click me
            Hello, {name}!

    );
}

```

---

💡 Utilisation
-------------

[](#-utilisation)

### Dans votre Contrôleur

[](#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)

[](#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 (

            About Us
            Lorem ipsum dolor sit amet, consectetur adipisicing elit.

    );
}

```

---

🔗 Shared Data (Données Partagées)
---------------------------------

[](#-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;

```

Si vous voulez gérez dans votre application d'autres données partagées sur toutes les pages, voici un exemple pour récupérer l'utilisateur connecté:

Créez un EventListener tel que:

```
use Gbtux\InertiaBundle\Event\InertiaShareEvent;
use Symfony\Bundle\SecurityBundle\Security;
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;

#[AsEventListener(event: InertiaShareEvent::class)]
class InertiaShareListener
{
    public function __construct(private Security $security) {}

    public function __invoke(InertiaShareEvent $event): void
    {
        // Partager l'utilisateur connecté
        $event->share('auth', [
            'user' => $this->security->getUser() ? [
                'username' => $this->security->getUser()->getUserIdentifier(),
                'email' => $this->security->getUser()->getEmail(),
                'name' => $this->security->getUser()->getName(),
            ] : null,
        ]);

        // Partager les variables d'environnement (ex: nom de l'app)
        //$event->share('app_name', 'Mon Super Projet');
    }
}

```

En React, vous pouvez récupérer les données ainsi:

```
interface SharedData {
    auth: Auth;
}
.....
const { auth } = usePage().props;
......

et dans UserInfo:

```

---

🛠️ Fonctionnalités
------------------

[](#️-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.
- **Shadcn** : Utilisez la bibliothèque de composants la plus utilisée du monde React

---

🤝 Contribution
--------------

[](#-contribution)

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

---

📄 Licence
---------

[](#-licence)

Ce bundle est sous licence **MIT**.

---

Fait avec ❤️ par [Gbtux](https://github.com/gbtux)

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance58

Moderate activity, may be stable

Popularity3

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/baa712d9c83dcfcb64a94d2c3ad8d3db282e7985a807c4d076fe5c76f1938d22?d=identicon)[gbtux](/maintainers/gbtux)

---

Top Contributors

[![gbtux](https://avatars.githubusercontent.com/u/2924704?v=4)](https://github.com/gbtux "gbtux (8 commits)")

### Embed Badge

![Health badge](/badges/gbtux-inertia-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/gbtux-inertia-bundle/health.svg)](https://phpackages.com/packages/gbtux-inertia-bundle)
```

###  Alternatives

[mustache/mustache

A Mustache implementation in PHP.

3.3k44.6M291](/packages/mustache-mustache)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9682.1M97](/packages/roots-acorn)[whitecube/nova-flexible-content

Flexible Content &amp; Repeater Fields for Laravel Nova.

8053.0M25](/packages/whitecube-nova-flexible-content)[mopa/bootstrap-bundle

Easy integration of twitters bootstrap into symfony2

7042.9M33](/packages/mopa-bootstrap-bundle)[limenius/react-bundle

Client and Server-side react rendering in a Symfony Bundle

3871.2M](/packages/limenius-react-bundle)[nicmart/string-template

StringTemplate is a very simple string template engine for php. I've written it to have a thing like sprintf, but with named and nested substutions.

2101.7M30](/packages/nicmart-string-template)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
