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 :

var template html dans code php


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 230
    Points : 52
    Points
    52
    Par défaut var template html dans code php
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
     
     
    <?php
     
    class Vignette extends BaseLists
    {
     
        /**
         * Construction du HTML/JS des vignettes
         * @return [type] [description]
         */
        public function render()
        {
            // Calcul des classes bootstrap à utiliser
            $cols   = $this->options['colNum'];
            $params = array('nbMd' => floor(12/$cols), 'nbSm' => floor(12/($cols/2)), 'nbXs' => 12);
     
            try{
                $partial = $this->options['displayPartial'];
                sfContext::getInstance()->getConfiguration()->loadHelpers("Partial", "Url", "MyHelper");
                $template = get_partial($partial, $params);
                $template = preg_replace("#\r\n#", "", $template);
     
                $replace = "";
                foreach ($this->columns as $name => $params) {
                    $replace .= "tmp=tmp.replace(/{{$name}}/g, item.$name);";
                }
                foreach ($this->actionColumns as $name => $params) {
                    $replace .= "tmp=tmp.replace(/{{$name}}/g, item.$name);";
                }
            } catch (Exception $e) {
                echo $e->getMessage();
            }
     
            $ret .= <<<EOT
                        <script type='text/javascript'>
                            var template = "{$template}";
                            var data = {};
                            
                            
                            /* Remplacement des champs du template de vignette par les données */
                            function replaceFields (tmp, item) {
                                {$replace}
                                return tmp;
                            }
                            
                                
                            /* Création des vignettes */
                            function loadGrid(data) {
                                fullPage = '';
                                
                                if(data.rows.length == 0) {
                                    fullPage = "<div class='col-center col-lg-9'><span style='margin:0 auto;'>Aucun article</span></div>";
                                } else {
                                    jQuery.each(data.rows, function(i, item) {
                                        tmp = template;
                                        fullPage = fullPage + replaceFields(tmp, item);
                                    });
                                }
    
                                jQuery('#{$this->options['name']}').html('<div class=\"row\">' + fullPage + '</div>');
    
                                generatePager(data);
                                
                                if (typeof gridComplete == 'function') { 
                                    gridComplete();
                                }
                                
                                jQuery("html, body").animate({ scrollTop: 0 }, "slow");
                            }
                                
                            
                            /* Génération du pager (navigation par page) */
                            function generatePager(data) {
                                currentPage = data.page;
                                if (currentPage == null) {
                                    currentPage = 1;
                                } else {
                                    currentPage = parseInt(currentPage);
                                }
                                totalPage    = parseInt(data.total);
                                totalResults = parseInt(data.records);
    
                                form = jQuery('<span style=\"display:inline-block;margin-left:45%;width:auto;\"></span>');
                                if(currentPage > 1) {
                                    form.append('<span style="display:inline-block;height: 19px;width: 19px;cursor:pointer;" class=\"ui-icon ui-icon-seek-prev\" onClick=\"data.page=currentPage-1;reloadGrid();\"></span>');
                                }
                                form.append('<span>Page ' + currentPage + '/' + totalPage + '</span>');
                                if(currentPage < totalPage) {
                                    form.append('<span style="display:inline-block;height: 19px;width: 19px;cursor:pointer;" class=\"ui-icon ui-icon-seek-next\" onClick=\"data.page=currentPage+1;reloadGrid();\"></span>');
                                }
    
                                jQuery('#{$this->options['name']}pager').addClass('ui-state-default');
                                jQuery('#{$this->options['name']}pager').html('');
                                jQuery('#{$this->options['name']}pager').append('<form></form>');
                                jQuery('#{$this->options['name']}pager').children().first().append(form);
                            }
    
                            /* Rechargement des vignettes (appel ajax) */
                            function reloadGrid(url) {
                                
                                // Construction des filtres de recherche
                                if (typeof buildPostData == 'function') {
                                    postData = buildPostData();
                                    if (postData.search === "true") {
                                        data.search = "true";
                                        data.filters = postData.filters;
                                    }
                                }
                                
                                if(typeof url !== 'undefined') {
                                    jQuery.ajax({
                                        dataType: 'json',
                                        data: data,
                                        url: url,
                                        beforeSend: function(){
                                            if (typeof beforeSend == 'function') {
                                                beforeSend();
                                            }
                                        },
                                        success: loadGrid
                                    });
                                } else  {
                                    jQuery.ajax({
                                        dataType: 'json',
                                        data: data,
                                        beforeSend: function(){
                                            if (typeof beforeSend == 'function') {
                                                beforeSend();
                                            }
                                        },
                                        success: loadGrid
                                    });
                                }
                            }                        
                            
                            jQuery(document).ready(function(){
                                // On ne lance le chargement initial du grid que si on n'arrive pas
                                // sur la page avec une recherche à lancer
                                if (typeof needToReloadSearchFilters != "undefined" && needToReloadSearchFilters !== true) {
                                    reloadGrid();
                                }
                            });
                                
                        </script>
    
                        <div id='{$this->options['name']}'></div>
                        <div id='{$this->options['name']}pager'></div>
    EOT;
     
            return $ret;
        }
     
    }
    voici le composant vignette que j'utilise dans le template suivant :
    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
     
            <h4>{itmdes1}</h4>    
            <h5 class='title-product'>{codeproduct}</h5>
            <label>{itmdes2}</label>
    <?php         
            $template = <<<TEMPLATE
    {codeproduct}
    TEMPLATE;
    ?>
            <br/>
            <a href='<?php echo url_for("@produit_id?id=".$template."") ?>' class='fancybox fancybox.iframe'>
                <button class='btn btn-effect topprocolor'>
                    <div class='productsearch'></div>
                    <img width='20px' height='20px' src='/skins/toppro/images/icons/search_32.png'>
                    <div class='labelbouton'>&nbsp; <?php echo __("voir"); ?> &nbsp;</div>
                </b
    dans le code html quand je met {itmdes2} ceci est remplace par la valeur dans la base de donnée mais je n'arrive pas à afficher la valeur dans le code php
    <a href='<?php echo url_for("@produit_id?id={codeproduct}) ?>' ça me met dans le lien {codeproduct} et non la valeur correspondante .
    Comment je peux faire pour affichier la valeur dans le code php merci de votre aide ça fait plusieurs jour que je suis dessus et je ne trouve pas la solution et j'avance pas .

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Tu as essayé ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href='<?php echo url_for("@produit_id?id=".$codeproduct."") ?>' class='fancybox fancybox.iframe'>

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 230
    Points : 52
    Points
    52
    Par défaut
    Oui maîtrepylos j'ai déjà essayé mais ça renvois rien puisque la variable n'est asssigne a aucune valeur . {codeproduit} dans le code html marche pas mais pas dans le code php . Ça correspond à priori à un template qui est remplacé par une valeur à la vole

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Tu passes comment les variables à ta vue.

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 230
    Points : 52
    Points
    52
    Par défaut
    Bonjour maitrepylos . j'utilise le composant vignette_catalogue utilisé comme un jqgrid par exemple {codeproduct} correspond à la colonne de mon composant qui reprend
    la valeur correspondant dans la base de donnée .
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
     public static function getGrid(sfWebRequest $request)
        {
     
     
            $grid = new Vignette("listArticles");
     
            $grid->setRowNum(9)
                 ->setColNum(3)
                 ->setDisplayPartial("catalogue/vignette_catalogue")
                 ->setEventListener('gridComplete')
                 ->setEventListener('beforeRequest')
                 ->setEventListener('afterSaveCell')
                 ->setEventListener('afterSubmitCell');
     
            // Les colonnes
            $grid->addColumn('id', 'Id', 'integer', array('width' => 30, 'align' => 'center', 'hidden' => true, ));
            $grid->addColumn('codeproduct', 'CODE', 'integer', array('width' => 70, 'align' => 'center', 'key' => true, 'hidden' => false, 'searchoptions' => array('sopt' => array('bw', 'cn', 'eq', 'bn', 'ew', 'en', 'nc'))));
            $grid->addColumn('volume', 'VOLUME', 'integer', array('width' => 70, 'align' => 'center', 'sortable' => false, 'search' => false));
            $grid->addColumn('itmdes1', 'DESCRIPTION', 'string', array('width' => 200, 'searchoptions' => array('sopt' => array('cn', 'eq', 'bw', 'bn', 'ew', 'en', 'nc'))));
            $grid->addColumn('itmdes2', 'DESCRIPTION', 'string', array('width' => 200, 'searchoptions' => array('sopt' => array('cn', 'eq', 'bw', 'bn', 'ew', 'en', 'nc'))));
            $grid->addColumn('nbuccol', 'cond', 'string', array('width' => 50, 'searchoptions' => array('sopt' => 
                array('cn', 'eq', 'bw', 'bn', 'ew', 'en', 'nc'))));
            $grid->addColumn('image', 'IMAGE', 'string', array('width' => 200));
            $grid->addColumn('uniteevente', 'Unité', 'string', array('width' => 200));
            $grid->addActionColumnInput('prix_brut', array('label' => 'Prix brut', 'width' => 70, 'align' => 'center', "editable" =>false,"editoptions" => array('size' => 3)));
            $grid->addActionColumnInput('prix_net', array('label' => 'Prix net', 'width' => 70, 'align' => 'center', "editable" =>false, "editoptions" => array('size' => 3)));
            $grid->addActionColumnInput('nb_article', array('label' => 'Quantité', 'width' => 70, 'align' => 'center', "editoptions" => array('size' => 3)));
            $grid->setCellEdit(true)->setCellsubmit('remote')->setCellurl(url_for("catalogue/addPanier"));
     
            $grid->setCustomFormatter('itmdes1', 'fancyFormatter', array('baseLinkUrl' => '/private.php/produit/index'));
     
     
            $grid->setCustomaActionFormatter('prix_brut',    'puFormatter',    array('decimalSeparator'   => ',',
                                                                                   'thousandsSeparator' => ' ',
                                                                                    'suffix'             => '€',
                                                                                    'decimalPlaces'      => 2,
                                                                                    'defaultValue'       => ' ', ));
            $grid->setCustomaActionFormatter('prix_net',    'puFormatter',    array('decimalSeparator'   => ',',
                                                                                   'thousandsSeparator' => ' ',
                                                                                    'suffix'             => '€',
                                                                                    'decimalPlaces'      => 2,
                                                                                    'defaultValue'       => ' ', ));
     
            $query = Doctrine_Query::create()
                                ->select('*, f.*, g.*, m.*, s.*, ft.*, fil.*')
                                ->from(sfConfig::get('app_ecom_product_class') . ' as p')
                                ->where('siteecommerce = 2 AND siteinvisible <> 2')
                                ->innerJoin('p.marque as m')
                                ->innerJoin('p.ficheTechnique as ft')
                                ->innerJoin('p.familles as f')
                                ->leftJoin('p.sousfamilles as s')
                                ->innerJoin('f.gamme as g')
                                ->leftJoin('ft.filtres as fil');
     
            if (($gamme = $request->getParameter('gamme'))) {
                $query->andWhere('g.codegamme = ?', $gamme);
            }
     
            if (($famille = $request->getParameter('famille'))) {
                $query->andWhere('f.codefamille = ?', $famille);
            }
     
            if (($marque = $request->getParameter('marque'))) {
                $query->andWhere('m.codemarque = ?', $marque);
            }
     
            if (($sfamille = $request->getParameter('sousFamille')) || ($sfamille = $request->getParameter('sousfamille'))) {
                $query->andWhere('s.codesfamille = ?', $sfamille);
            }
     
     
            $grid->setQuery($query);
     
            return $grid;
        }

  6. #6
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 230
    Points : 52
    Points
    52
    Par défaut
    Personne pour aider je bloque c'est pour le boulot . Et la personne qui a fait le composant est en vacances

  7. #7
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Simple question ton url_for est obligatoire, tu ne peux construire ta route autrement ?

  8. #8
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 230
    Points : 52
    Points
    52
    Par défaut
    bonjour maitrepilos .
    j'ai besoin d'utilisé d'utilisé url_for pour la traduction du site

  9. #9
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Dans tous les cas ceci {codeproduct} est une alternative à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $codeproduct ?>
    , il faut trouver le raisonnement!

Discussions similaires

  1. [MySQL] Syntaxe html dans code php
    Par LiliValerie dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/09/2012, 11h44
  2. [Tableaux] stocker code source html dans variable php
    Par vonwolf dans le forum Langage
    Réponses: 5
    Dernier message: 12/12/2007, 22h40
  3. balise div dans code php
    Par mealtone dans le forum Langage
    Réponses: 3
    Dernier message: 11/08/2006, 19h21
  4. code html dans du php
    Par dams78 dans le forum Langage
    Réponses: 6
    Dernier message: 17/03/2006, 11h06
  5. [MySQL] Erreur dans code php
    Par Badr3am dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 31/01/2006, 22h16

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