PHPackages                             lyssal/geographie-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. [Utility &amp; Helpers](/categories/utility)
4. /
5. lyssal/geographie-bundle

Abandoned → [lyssal/geography-bundle](/?search=lyssal%2Fgeography-bundle)Symfony-bundle[Utility &amp; Helpers](/categories/utility)

lyssal/geographie-bundle
========================

Bundle permettant de gérer des lieux (villes, départements, régions, pays)

0.1.4(10y ago)54825[1 issues](https://github.com/Lyssal/geographie-bundle/issues)2proprietaryPHP

Since Mar 12Pushed 10y ago2 watchersCompare

[ Source](https://github.com/Lyssal/geographie-bundle)[ Packagist](https://packagist.org/packages/lyssal/geographie-bundle)[ RSS](/packages/lyssal-geographie-bundle/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (9)Dependencies (3)Versions (10)Used By (2)

LyssalGeographieBundle
======================

[](#lyssalgeographiebundle)

LyssalGeographieBundle permet la manipulation de différentes données géographiques et des langues.

[![SensioLabsInsight](https://camo.githubusercontent.com/ea22aa5198bbacfd60d7c7546b7dd8e7e0207835fb7d005be8335b6320126a76/68747470733a2f2f696e73696768742e73656e73696f6c6162732e636f6d2f70726f6a656374732f65653238613363652d343031622d346230382d396634652d3731663564373338646131302f736d616c6c2e706e67)](https://insight.sensiolabs.com/projects/ee28a3ce-401b-4b08-9f4e-71f5d738da10)

Entités
-------

[](#entités)

Toutes les entités possèdent leur manager et leur gestion administrative (optionnelle) si vous utilisez Sonata.

Les entités sont :

- Pays
- Region
- Departement
- Ville
- CodePostal
- Langue

Utilisation
-----------

[](#utilisation)

Vous devez créer un bundle héritant LyssalGeographieBundle :

```
namespace Acme\GeographieBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class AcmeGeographieBundle extends Bundle
{
    public function getParent()
    {
        return 'LyssalGeographieBundle';
    }
}
```

Ensuite, vous devez créer dans votre bundle les entités héritant celles de LyssalGeographieBundle et redéfinir certaines propriétés :

```
namespace Acme\GeographieBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Lyssal\GeographieBundle\Entity\Pays as BasePays;
use Doctrine\ORM\Mapping\UniqueConstraint;

/**
 * Pays du monde.
 *
 * @ORM\Entity()
 * @ORM\Table
 * (
 *     name="acme_pays",
 *     uniqueConstraints=
 *     {
 *         @UniqueConstraint(name="CODE_ALPHA_2", columns={ "pays_code_alpha_2" }),
 *         @UniqueConstraint(name="CODE_ALPHA_3", columns={ "pays_code_alpha_3" })
 *     }
 * )
 */
class Pays extends BasePays
{
    /**
     * @var array
     *
     * @ORM\OneToMany(targetEntity="Region", mappedBy="pays")
     */
    protected $regions;
}
```

```
namespace Acme\GeographieBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Lyssal\GeographieBundle\Entity\Region as BaseRegion;

/**
 * Région d'un pays.
 *
 * @ORM\Entity()
 * @ORM\Table(name="acme_region")
 */
class Region extends BaseRegion
{
    /**
     * @var \Acme\GeographieBundle\Entity\Pays
     *
     * @ORM\ManyToOne(targetEntity="Pays", inversedBy="regions")
     * @ORM\JoinColumn(name="pays_id", referencedColumnName="pays_id", nullable=false, onDelete="CASCADE")
     */
    protected $pays;

    /**
     * @ORM\OneToMany(targetEntity="Departement", mappedBy="region")
     */
    protected $departements;
}
```

```
namespace Acme\GeographieBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Lyssal\GeographieBundle\Entity\Departement as BaseDepartement;
use Doctrine\ORM\Mapping\UniqueConstraint;

/**
 * Département d'une région.
 *
 * @ORM\Entity(repositoryClass="\Lyssal\GeographieBundle\Repository\DepartementRepository")
 * @ORM\Table
 * (
 *     name="acme_departement",
 *     uniqueConstraints=
 *     {
 *         @UniqueConstraint(name="REGION_CODE", columns={ "region_id", "departement_code" })
 *     }
 * )
 */
class Departement extends BaseDepartement
{
    /**
     * @var \Acme\GeographieBundle\Entity\Region
     *
     * @ORM\ManyToOne(targetEntity="Region", inversedBy="departements")
     * @ORM\JoinColumn(name="reg_id", referencedColumnName="reg_id", nullable=false, onDelete="CASCADE")
     */
    protected $region;

    /**
     * @var array
     *
     * @ORM\OneToMany(targetEntity="Ville", mappedBy="departement")
     */
    protected $villes;
}
```

```
namespace Acme\GeographieBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Lyssal\GeographieBundle\Entity\Ville as BaseVille;

/**
 * Ville.
 *
 * @ORM\Entity()
 * @ORM\Table(name="acme_ville")
 */
class Ville extends BaseVille
{
    /**
     * @var \Acme\GeographieBundle\Entity\Departement
     *
     * @ORM\ManyToOne(targetEntity="Departement", inversedBy="villes")
     * @ORM\JoinColumn(name="dep_id", referencedColumnName="dep_id", nullable=false, onDelete="CASCADE")
     */
    protected $departement;
}
```

```
namespace Acme\GeographieBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Lyssal\GeographieBundle\Entity\CodePostal as BaseCodePostal;

/**
 * Code postal.
 *
 * @ORM\Entity()
 * @ORM\Table(name="acme_code_postal", uniqueConstraints={@ORM\UniqueConstraint(name="UNIQUE_VILLE_CODE", columns={"ville_id", "code_postal_code"})})
 */
class CodePostal extends BaseCodePostal
{

}
```

```
namespace Acme\GeographieBundle\Entity;

use Lyssal\GeographieBundle\Entity\Langue as BaseLangue;
use Doctrine\ORM\Mapping as ORM;

/**
 * Langue.
 *
 * @ORM\Entity()
 * @ORM\Table(name="acme_langue")
 */
class Langue extends BaseLangue
{

}
```

Vous devez ensuite redéfinir les paramètres suivants :

- `lyssal.geographie.entity.departement.class` : Acme\\GeographieBundle\\Entity\\Departement
- `lyssal.geographie.entity.pays.class` : Acme\\GeographieBundle\\Entity\\Pays
- `lyssal.geographie.entity.region.class` : Acme\\GeographieBundle\\Entity\\Region
- `lyssal.geographie.entity.ville.class` : Acme\\GeographieBundle\\Entity\\Ville
- `lyssal.geographie.entity.code_postal.class` : Acme\\GeographieBundle\\Entity\\CodePostal
- `lyssal.geographie.entity.langue.class` : Acme\\GeographieBundle\\Entity\\Langue

Exemple avec sur `Acme/GeographieBundle/Resources/config/services.xml` :

```

        Acme\GeographieBundle\Entity\Ville
        Acme\GeographieBundle\Entity\CodePostal
        Acme\GeographieBundle\Entity\Departement
        Acme\GeographieBundle\Entity\Region
        Acme\GeographieBundle\Entity\Pays
        Acme\GeographieBundle\Entity\Langue

```

Vous devez paramétrer `` :

Dans votre `AppKernel.php` :

```
new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
```

Exemple dans votre `config.yml` :

```
doctrine:
    # ...
    orm:
        # ...
        mappings:
            translatable:
                type: annotation
                alias: Gedmo
                prefix: Gedmo\Translatable\Entity
                dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"

stof_doctrine_extensions:
    default_locale: "%locale%"
    orm:
        default:
            translatable: true
            sluggable: true
```

Managers
--------

[](#managers)

Les services sont :

- lyssal.geographie.manager.departement
- lyssal.geographie.manager.pays
- lyssal.geographie.manager.region
- lyssal.geographie.manager.ville
- lyssal.geographie.manager.code\_postal
- lyssal.geographie.manager.langue

### Exemple d'utilisation

[](#exemple-dutilisation)

Dans votre contrôleur :

```
$tousLesPays = $this->container->get('lyssal.geographie.manager.pays')->findAll();
```

### Utiliser vos managers hérités de LyssalGeographieBundle

[](#utiliser-vos-managers-hérités-de-lyssalgeographiebundle)

Si vous utilisez vos propres managers héritant des managers de LyssalGeographieBundle, vous pouvez redéfinir les paramètres suivants :

- `lyssal.geographie.manager.departement.class`
- `lyssal.geographie.manager.pays.class`
- `lyssal.geographie.manager.region.class`
- `lyssal.geographie.manager.ville.class`
- `lyssal.geographie.manager.code_postal.class`
- `lyssal.geographie.manager.langue.class`

Exemple en XML d'un manager personnalisé :

```

    Acme\GeographieBundle\Manager\DepartementManager

```

SonataAdmin
-----------

[](#sonataadmin)

Les entités seront automatiquement intégrées à SonataAdmin si vous l'avez installé.

Si vous souhaitez redéfinir les classes Admin, il suffit de surcharger les paramètres suivants :

- `lyssal.geographie.admin.departement.class`
- `lyssal.geographie.admin.pays.class`
- `lyssal.geographie.admin.region.class`
- `lyssal.geographie.admin.ville.class`
- `lyssal.geographie.admin.code_postal.class`
- `lyssal.geographie.admin.langue.class`

Installation
------------

[](#installation)

LyssalTourismeBundle utilise `StofDoctrineExtensions` que vous devrez paramétrer pour les traductions (`gedmo_translatable`).

1. Mettez à jour votre `composer.json` :

```
"require": {
    "lyssal/geographie-bundle": "*"
}
```

2. Installez le bundle :

```
php composer.phar update
```

3. Mettez à jour `AppKernel.php` :

```
new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(),
new Lyssal\StructureBundle\LyssalStructureBundle(),
new Lyssal\GeographieBundle\LyssalGeographieBundle(),
new Acme\GeographieBundle\AcmeGeographieBundle(),
```

4. Mettez à jour votre `config.yml` :

```
doctrine:
    orm:
        auto_mapping: true
        mappings:
            translatable:
                type: annotation
                alias: Gedmo
                prefix: Gedmo\Translatable\Entity
                dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"

stof_doctrine_extensions:
    default_locale: "%locale%"
    orm:
        default:
            translatable: true
            sluggable: true
```

5. Créez les tables en base de données :

```
php app/console doctrine:schema:update --force
```

Commandes
---------

[](#commandes)

### Importer des données

[](#importer-des-données)

Vide et importe des données :

```
php app/console lyssal:geographie:database:import
```

Attention : Les tables seront automatiquement vidées lors de l'appel de cette commande.

Le remplissage de la base concerne :

- Tous les pays avec nom en français et anglais
- Les régions de France avec nom en français
- Les départements de France avec nom en français
- Les villes de France avec nom en français et codes postaux

### CSV

[](#csv)

Pour remplir la base de données, `LyssalGeographieBundle` utilise les CSV de sql.sh pour les pays, les départements et les villes.

Ce(tte) oeuvre de  est mise à disposition selon les termes de la licence Creative Commons Attribution – Partage dans les Mêmes Conditions 4.0 International().

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance16

Infrequent updates — may be unmaintained

Popularity20

Limited adoption so far

Community16

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 75% 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.

###  Release Activity

Cadence

Every ~51 days

Recently: every ~57 days

Total

9

Last Release

3669d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/10855303?v=4)[Rémi Leclerc](/maintainers/Lyssal)[@Lyssal](https://github.com/Lyssal)

---

Top Contributors

[![Lyssal](https://avatars.githubusercontent.com/u/10855303?v=4)](https://github.com/Lyssal "Lyssal (3 commits)")[![gelhaimer](https://avatars.githubusercontent.com/u/3752322?v=4)](https://github.com/gelhaimer "gelhaimer (1 commits)")

---

Tags

regionvillepaysdepartementgeographie

### Embed Badge

![Health badge](/badges/lyssal-geographie-bundle/health.svg)

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

###  Alternatives

[ofcold/identity-card

A simple proof of identity card of the people's Republic of China.

18839.6k](/packages/ofcold-identity-card)[sylius/taxonomy-bundle

Flexible categorization system for Symfony.

26388.2k7](/packages/sylius-taxonomy-bundle)[sylius/addressing-bundle

Addressing and zone management for Symfony applications.

33221.4k3](/packages/sylius-addressing-bundle)[yupoxiong/region

ThinkPHP省市区(县)街道四级联动扩展

1032.9k1](/packages/yupoxiong-region)

PHPackages © 2026

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