2017 © Pedro Peláez
 

symfony-bundle tourisme-bundle

Bundle pour applications touristiques

image

lyssal/tourisme-bundle

Bundle pour applications touristiques

  • Monday, March 14, 2016
  • by Lyssal
  • Repository
  • 1 Watchers
  • 0 Stars
  • 37 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 5 Versions
  • 0 % Grown

The README.md

LyssalTourismeBundle

LyssalTourismeBundle contient différents outils facilitant le développement d'applications touristiques., (*1)

SensioLabsInsight, (*2)

Entités

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

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, (*4)

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

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)., (*6)

Reportez-vous à la documentation de StructureLyssalBundle pour plus d'informations., (*7)

Utilisation

Vous devez créer un bundle héritant LyssalTourismeBundle :, (*8)

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., (*9)

Vous devez hériter à minima les entités ainsi :, (*10)

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;
}

```php namespace Acme\TourismeBundle\Entity;, (*11)

use Doctrine\ORM\Mapping as ORM; use Lyssal\TourismeBundle\Entity\StructureGroupe as BaseStructureGroupe;, (*12)

/** * 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; }, (*13)

```php
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;
}

```php namespace Acme\TourismeBundle\Entity;, (*14)

use Doctrine\ORM\Mapping as ORM; use Lyssal\TourismeBundle\Entity\Caracteristique as BaseCaracteristique;, (*15)

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

}, (*17)

```php
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;
}

```php namespace Acme\TourismeBundle\Entity\Structure;, (*18)

use Doctrine\ORM\Mapping as ORM; use Lyssal\TourismeBundle\Entity\Structure\Restauration as BaseRestauration;, (*19)

/** * 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; }, (*20)


Vous devez ensuite redéfinir les paramètres d'entité (exemple sur `Acme/GeographieBundle/Resources/config/services.xml`) : ```xml <?xml version="1.0" ?> <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> <parameters> <parameter key="lyssal.tourisme.entity.structure.class">Acme\TourismeBundle\Entity\Structure</parameter> <parameter key="lyssal.tourisme.entity.structure.hebergement.class">Acme\TourismeBundle\Entity\Structure\Hebergement</parameter> <parameter key="lyssal.tourisme.entity.structure.restauration.class">Acme\TourismeBundle\Entity\Structure\Restauration</parameter> <parameter key="lyssal.tourisme.entity.structure_groupe.class">Acme\TourismeBundle\Entity\StructureGroupe</parameter> <parameter key="lyssal.tourisme.entity.structure_type.class">Acme\TourismeBundle\Entity\StructureType</parameter> <parameter key="lyssal.tourisme.entity.caracteristique.class">Acme\TourismeBundle\Entity\Caracteristique</parameter> </parameters> </container>

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

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

Les services sont : * lyssal.tourisme.manager.structure * lyssal.tourisme.manager.structure_groupe * lyssal.tourisme.manager.structure_type * lyssal.tourisme.manager.caracteristique, (*22)

Exemple d'utilisation

Dans votre contrôleur :, (*23)

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

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 :, (*24)

<parameters>
    <parameter key="lyssal.tourisme.manager.structure.class">Acme\TourismeBundle\Manager\StructureManager</parameter>
    <parameter key="lyssal.tourisme.manager.structure_groupe.class">Acme\TourismeBundle\Manager\StructureGroupeManager</parameter>
    <parameter key="lyssal.tourisme.manager.structure_type.class">Acme\TourismeBundle\Manager\StructureTypeManager</parameter>
    <parameter key="lyssal.tourisme.manager.caracteristique.class">Acme\TourismeBundle\Manager\CaracteristiqueManager</parameter>
</parameters>

Vues

Certaines vues prédéfinies peuvent être incluses dans les vues de vos bundles., (*25)

Ville

Liste de villes :, (*26)

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

Ville d'une liste :, (*27)

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

Affichage d'une ville :, (*28)

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

Structure

Liste de structures :, (*29)

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

Structure d'une liste :, (*30)

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

SonataAdmin

Les entités seront automatiquement intégrées à SonataAdmin si vous l'avez installé., (*31)

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, (*32)

Vous devriez également installer IvoryCKEditorBundle pour avoir automatiquement un éditeur graphique aux champs attendant du HTML., (*33)

Alternativement, vous pouvez juste installer LyssalAdminBundle., (*34)

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)., (*35)

  1. Mettez à jour votre composer.json :
"require": {
    "lyssal/tourisme-bundle": "*"
}
  1. Installez le bundle :
php composer.phar update
  1. Mettez à jour AppKernel.php :
new Lyssal\TourismeBundle\LyssalTourismeBundle(),
  1. Créez les tables en base de données :
php app/console doctrine:schema:update --force

The Versions

14/03 2016
12/03 2015

0.1

0.1.0.0

Bundle pour applications touristiques

  Sources   Download

proprietary

The Requires

 

tourisme