IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Actualiser dynamiquement des select dans un template


Sujet :

Symfony PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Actualiser dynamiquement des select dans un template
    Bonjour,

    Je travail sous Symfony 2.5, sur de la gestion de caméra.

    J'ai une vue d'où je peux visualiser l'image d'une caméra (requête HTTP) ainsi que changer plusieurs paramètres pour la visualisation. Je sélectionne la caméra par l'intermédiaire d'un select ce qui doit avoir pour effet de changer l'image ainsi que les options de deux autres select en plus j'ai 3 input de type range pour gérer l'orientation et le zoom. Cette vue peut-être utilisée plusieurs fois dans d'autre template (pour justifier des {{ number }} qui me permettent de savoir quel vue envoie des informations).

    Je voudrais donc savoir comment je peut actualiser ces différents éléments (en particulier les select) sous Symfony, ma première pensé à été de réaliser cela en javascript avec des requêtes AJAX et puis j'ai pensé à utiliser des render dans la vue sans trop savoir comment les actualiser enfin pour le moment je suis bloqué.

    Ma vue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    <div class="video_frame" id="video_frame_{{ number }}">    
        <form method='post'>
            <div class="image_select" id="image_select_{{ number }}">
                <select class="camera_select" id="camera_select_{{ number }}" OnChange="">
                    {% for c in cameras %}
                            <option value={{ c.id }}>{{ c.name }}</option>
                    {% endfor %}
                </select>
                <select class="resolution" id="resolution_{{ number }}">
                    {% for r in resolutions %}
                        <option value={{ r.name }}>{{ r.niceName }}</option>
                    {% endfor %}
                </select>
                <select  class="preset" id="preset_{{ number }}">
                    {% for p in presets %}
                        <option value={{ p }}>{{ p }}</option>
                    {% endfor %}
                </select>
                <input type="submit" class="add" id="add_{{ number }}" value="Add"/>
                <input type="submit" class="delete" id="delete_{{ number }}" value="Delete"/>
     
            </div>
            <div class="center" style="height:{{ height }}px; width: {{ width }}px; ">
                {% set width = width-56 %}
                <div class="image_div" style="width: {{ width }}px;">
                    <img class="image" id="image_{{ number }}" title="something" alt="Image from 'something' could not be displayed." src="http://root:pass@192.168.5.167:80/axis-cgi/mjpg/video.cgi?resolution=640x480"/>
                    <input class="pan" id="pan_{{ number }}" type="range" value="50" min="0" max="100"/>
                </div>
                <div class="vertical" id="vertical_{{ number }}">
                    {% set marg_left = 25-(height/2) %}
                    {% set marg_top = (height/2)-30 %}
                    {% set height = height-0.07*height %}
                    <input class="tilt" id="tilt_{{ number }}" type="range" value="50" min="0" max="100" style="width:{{ height }}px;margin-top: {{ marg_top }}px;margin-left: {{ marg_left }}px;"/>
                    {% set marg_left = marg_left+30 %}
                    <input class="zoom" id="zoom_{{ number }}" type="range" value="50" min="0" max="100" style="width:{{ height }}px;margin-left: {{ marg_left }}px;"/>
                    <a class="full_screen" id="full_screen_{{ number }}" href=""><img src=""/></a>
                </div>
            </div>
        </form>
        {% javascripts '@V5SiteBundle/Resources/public/js/*' output='js/compiled/main.js' %}
            <script src="{{ asset_url }}"></script>
        {% endjavascripts %}
    </div>
    Si quelqu'un pet m'orienter vers la solution, merci.

  2. #2
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 418
    Points : 7 295
    Points
    7 295
    Par défaut
    Ton render sera fait coté serveur.

    Par contre, tu dois pouvoir l'appeller depuis une route si tu veux(c'est bien une action ??)

    Donc si tu peux, il te sera aisé de retourner une vue ou l'autre selon que ta requete vient en ajax ou pas. Tu peux réutiliser le même code comme cela.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci de répondre si rapidement.

    Ma vue existe déjà et je l'utilise dans d'autre template avec des include. Mon problème est sur l'actualisation des select dans cette vue car je ne veux pas recharger toute la page car l'accès aux caméras est plutôt long.

    Une petite vision d'un template qui reprend 4 fois la vue ( pas totalement finie) :
    Nom : Screenshot - 07182014 - 05:06:01 PM.png
Affichages : 152
Taille : 60,0 Ko

    Avec le premier select pour les caméra et les deux autres que je veux actualiser en fonction du premier.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Si ma question est mal posée. Dites le moi, je la modifierai.

Discussions similaires

  1. ajout dynamique des option dans un select
    Par rochdi123 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/10/2009, 20h30
  2. taille dynamique des cases dans état
    Par exter666 dans le forum Access
    Réponses: 14
    Dernier message: 09/09/2005, 15h30
  3. ajouter dynamiquement des items dans un popup menu
    Par Malone dans le forum Composants VCL
    Réponses: 7
    Dernier message: 23/08/2005, 16h08
  4. Ajout/Suppression dynamique des lignes dans une table
    Par codexomega dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/08/2005, 18h50
  5. Réponses: 2
    Dernier message: 31/08/2002, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo