PHPackages                             lyssal/tourisme-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. lyssal/tourisme-bundle

AbandonedSymfony-bundle

lyssal/tourisme-bundle
======================

Bundle pour applications touristiques

0.1.1.3(7y ago)0533proprietaryPHP

Since Mar 12Pushed 7y ago1 watchersCompare

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

READMEChangelog (5)Dependencies (4)Versions (6)Used By (0)

LyssalTourismeBundle
====================

[](#lyssaltourismebundle)

`LyssalTourismeBundle` contient différents outils facilitant le développement d'applications touristiques.

[![SensioLabsInsight](https://camo.githubusercontent.com/1b1a6935ab5b3ef79b431672e72111a10bc533dfdf0e7aa4d8e034ddf9e82e99/68747470733a2f2f696e73696768742e73656e73696f6c6162732e636f6d2f70726f6a656374732f31656334303031312d613365622d343239322d626562352d3133623331336266313331382f736d616c6c2e706e67)](https://insight.sensiolabs.com/projects/1ec40011-a3eb-4292-beb5-13b313bf1318)

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 :

- Structure : Une structure précise comme le musée du Louvre, l'hôtel des flots bleus, etc
- StructureType : Un type de structure comme musée, zoo, gare ferroviaire, office de tourisme, etc
- StructureGroupe : Un groupe de structure comme Carrefour, Krys, Devred, etc
- Caracteristique : Une caractéristique de structure (Wifi, Accepte les animaux, etc)
- Structure\\Hebergement : Champs spécifiques à un hébergement
- Structure\\Restauration : Champs spécifiques à la restauration

Une structure peut appartenir à plusieurs types (par exemple hôtel et restaurant) mais ne peut appartenir qu'à un seul (ou aucun) groupe.

Repository
----------

[](#repository)

Vous devez définir le `EntityRepository` de `StructureLyssalBundle` comme repository par défaut (ou définir pour chaque entité héritée d'un bundle Lyssal le repositoryClass).

Reportez-vous à la documentation de `StructureLyssalBundle` pour plus d'informations.

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

[](#utilisation)

Vous devez créer un bundle héritant `LyssalTourismeBundle` :

```
namespace Acme\TourismeBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class AcmeTourismeBundle extends Bundle
{
    public function getParent()
    {
        return 'LyssalTourismeBundle';
    }
}
```

Ensuite, vous devez créer dans votre bundle les entités nécessaires héritant celles de `LyssalTourismeBundle`.

Vous devez hériter à minima les entités ainsi :

```
namespace Acme\TourismeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Lyssal\TourismeBundle\Entity\Structure as BaseStructure;

/**
 * Structure.
 *
 * @ORM\Entity(repositoryClass="Lyssal\TourismeBundle\Repository\StructureRepository")
 * @ORM\Table(name="acme_structure", uniqueConstraints={@ORM\UniqueConstraint(name="SLUG_VILLE_UNIQUE", columns={"structure_slug", "ville_id"})})
 */
class Structure extends BaseStructure
{
    /**
     * @var \Acme\GeographieBundle\Entity\Ville
     *
     * @ORM\ManyToOne(targetEntity="Acme\GeographieBundle\Entity\Ville", inversedBy="structures", cascade={"persist"})
     * @ORM\JoinColumn(name="ville_id", referencedColumnName="ville_id", nullable=false, onDelete="CASCADE")
     */
    protected $ville;

    /**
     * @var \Acme\TourismeBundle\Entity\Structure\Hebergement
     *
     * @ORM\OneToOne(targetEntity="\Acme\TourismeBundle\Entity\Structure\Hebergement", inversedBy="structure", cascade="persist")
     * @ORM\JoinColumn(name="structure_hebergement_id", referencedColumnName="structure_hebergement_id", nullable=true, onDelete="CASCADE")
     */
    protected $hebergement;

    /**
     * @var \Acme\TourismeBundle\Entity\Structure\Restauration
     *
     * @ORM\OneToOne(targetEntity="\Acme\TourismeBundle\Entity\Structure\Restauration", inversedBy="structure", cascade="persist")
     * @ORM\JoinColumn(name="structure_restauration_id", referencedColumnName="structure_restauration_id", nullable=true, onDelete="CASCADE")
     */
    protected $restauration;
}
```

```
namespace Acme\TourismeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Lyssal\TourismeBundle\Entity\StructureGroupe as BaseStructureGroupe;

/**
 * Groupe de structure.
 *
 * @ORM\Entity
 * @ORM\Table(name="acme_structure_groupe")
 */
class StructureGroupe extends BaseStructureGroupe
{
    /**
     * array
     *
     * @ORM\OneToMany(targetEntity="\Acme\TourismeBundle\Entity\Structure", mappedBy="groupe", cascade={"persist"})
     */
    protected $structures;
}
```

```
namespace Acme\TourismeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Lyssal\TourismeBundle\Entity\StructureType as BaseStructureType;

/**
 * Type de structure.
 *
 * @ORM\Entity
 * @ORM\Table(name="acme_structure_type")
 */
class StructureType extends BaseStructureType
{
    /**
     * @ORM\ManyToMany(targetEntity="\Acme\TourismeBundle\Entity\Structure", mappedBy="types")
     */
    protected $structures;
}
```

```
namespace Acme\TourismeBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Lyssal\TourismeBundle\Entity\Caracteristique as BaseCaracteristique;

/**
 * Caractéristique.
 *
 * @ORM\Entity()
 * @ORM\Table(name="acme_caracteristique")
 */
class Caracteristique extends BaseCaracteristique
{

}
```

```
namespace Acme\TourismeBundle\Entity\Structure;

use Doctrine\ORM\Mapping as ORM;
use Lyssal\TourismeBundle\Entity\Structure\Hebergement as BaseHebergement;

/**
 * Structure\Hebergement.
 *
 * @ORM\Entity()
 * @ORM\Table(name="acme_structure_hebergement")
 */
class Hebergement extends BaseHebergement
{
    /**
     * @var \Acme\TourismeBundle\Entity\Structure
     *
     * @ORM\OneToOne(targetEntity="\Acme\TourismeBundle\Entity\Structure", mappedBy="hebergement")
     */
    protected $structure;
}
```

```
namespace Acme\TourismeBundle\Entity\Structure;

use Doctrine\ORM\Mapping as ORM;
use Lyssal\TourismeBundle\Entity\Structure\Restauration as BaseRestauration;

/**
 * Structure\Restauration.
 *
 * @ORM\Entity()
 * @ORM\Table(name="acme_structure_restauration")
 */
class Restauration extends BaseRestauration
{
    /**
     * @var \Acme\TourismeBundle\Entity\Structure
     *
     * @ORM\OneToOne(targetEntity="\Acme\TourismeBundle\Entity\Structure", mappedBy="restauration")
     */
    protected $structure;
}
```

Vous devez ensuite redéfinir les paramètres d'entité (exemple sur `Acme/GeographieBundle/Resources/config/services.xml`) :

```

        Acme\TourismeBundle\Entity\Structure
        Acme\TourismeBundle\Entity\Structure\Hebergement
        Acme\TourismeBundle\Entity\Structure\Restauration
        Acme\TourismeBundle\Entity\StructureGroupe
        Acme\TourismeBundle\Entity\StructureType
        Acme\TourismeBundle\Entity\Caracteristique

```

Vous devez également mettre à jour l'entité `Ville` de votre `AcmeGeographieBundle` (qui étend LyssalGeographieBundle) :

```
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
{
    //...

    /**
     * array
     *
     * @ORM\OneToMany(targetEntity="\Acme\TourismeBundle\Entity\Structure", mappedBy="ville", cascade={"persist"})
     */
    private $structures;

    /**
     * Add structures
     *
     * @param \Acme\TourismeBundle\Entity\Structure $structures
     * @return Ville
     */
    public function addStructure(\Acme\TourismeBundle\Entity\Structure $structures)
    {
        $this->structures[] = $structures;

        return $this;
    }

    /**
     * Remove structures
     *
     * @param \Acme\TourismeBundle\Entity\Structure $structures
     */
    public function removeStructure(\Acme\TourismeBundle\Entity\Structure $structures)
    {
        $this->structures->removeElement($structures);
    }

    /**
     * Get structures
     *
     * @return \Doctrine\Common\Collections\Collection
     */
    public function getStructures()
    {
        return $this->structures;
    }
}
```

Managers
--------

[](#managers)

Les services sont :

- `lyssal.tourisme.manager.structure`
- `lyssal.tourisme.manager.structure_groupe`
- `lyssal.tourisme.manager.structure_type`
- `lyssal.tourisme.manager.caracteristique`

### Exemple d'utilisation

[](#exemple-dutilisation)

Dans votre contrôleur :

```
$tousLesStructureGroupes = $this->container->get('lyssal.tourisme.manager.structure_groupe')->findAll();
```

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

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

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

```

    Acme\TourismeBundle\Manager\StructureManager
    Acme\TourismeBundle\Manager\StructureGroupeManager
    Acme\TourismeBundle\Manager\StructureTypeManager
    Acme\TourismeBundle\Manager\CaracteristiqueManager

```

Vues
----

[](#vues)

Certaines vues prédéfinies peuvent être incluses dans les vues de vos bundles.

### Ville

[](#ville)

Liste de villes :

```
{% include 'LyssalTourismeBundle:Ville/include:list.html.twig' with { 'villes':villes } %}
```

Ville d'une liste :

```
{% include 'LyssalTourismeBundle:Ville/include:list_element.html.twig' with { 'ville':ville } %}
```

Affichage d'une ville :

```
{% include 'LyssalTourismeBundle:Ville/include:view.html.twig' with { 'ville':ville } %}
```

### Structure

[](#structure)

Liste de structures :

```
{% include 'LyssalTourismeBundle:Structure/include:list.html.twig' with { 'structures':structures } %}
```

Structure d'une liste :

```
{% include 'LyssalTourismeBundle:Structure/include:list_element.html.twig' with { 'structure':structure } %}
```

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.tourisme.admin.structure.class`
- `lyssal.tourisme.admin.structure_groupe.class`
- `lyssal.tourisme.admin.structure_type.class`
- `lyssal.tourisme.admin.caracteristique.class`
- `lyssal.tourisme.admin.structure.hebergement.class`
- `lyssal.tourisme.admin.structure.restauration.class`

Vous devriez également installer `IvoryCKEditorBundle` pour avoir automatiquement un éditeur graphique aux champs attendant du HTML.

Alternativement, vous pouvez juste installer `LyssalAdminBundle`.

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

[](#installation)

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

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

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

2. Installez le bundle :

```
php composer.phar update
```

3. Mettez à jour `AppKernel.php` :

```
new Lyssal\TourismeBundle\LyssalTourismeBundle(),
```

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

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

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 60% 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 ~360 days

Total

5

Last Release

2633d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/04c355bdbe1840d9dcb9755715587ae210f1e52dabba760e9db760e5378757e7?d=identicon)[Lyssal](/maintainers/Lyssal)

---

Top Contributors

[![Lyssal](https://avatars.githubusercontent.com/u/10855303?v=4)](https://github.com/Lyssal "Lyssal (3 commits)")[![CedCannes](https://avatars.githubusercontent.com/u/2522998?v=4)](https://github.com/CedCannes "CedCannes (2 commits)")

---

Tags

tourisme

### Embed Badge

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

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

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M647](/packages/sylius-sylius)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.3M151](/packages/sulu-sulu)[sulu/skeleton

Project template for starting your new project based on the Sulu content management system

29733.3k](/packages/sulu-skeleton)[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)[sylius/promotion-bundle

Manage ecommerce promotions system in your Symfony application.

21426.2k3](/packages/sylius-promotion-bundle)

PHPackages © 2026

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