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

Web Perl Discussion :

Template toolkit + foreach


Sujet :

Web Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 23
    Points
    23
    Par défaut Template toolkit + foreach
    Bonjour,

    je suis entrain de développer une appli qui doit gérer le crontab de mon linux.
    Donc je développe actuellement l'interface web.
    Alors j'ai une pahe html avec un FORM qui envoie des variables dans un script grace au CGI. Et ce script renvoie une page html grace à HTML template. MAis j'ai un problème avec la gestion des tableaux. Je n'arrive pas à renvoyer l'ensemble des données du tableau à l'écran. Il n'affiche que la première ligne du tableau. Je pense que je ne manipule pas bien le foreach de template::toolkit.
    Voilà tout mon code.
    Ma page html avec mon form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
       <head>
           <title>Bienvenue sur mon site !</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
       </head>
       <body>
     <form action="/perl/lib/afficher_block.html">
    machine recherche : <input type="text" name="machinerech"><br>
    <input type="submit" value="Ok"><br>
    </form>
       </body>
    </html>
    mon scrpt perl : afficher_block.html
    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
     
    #!/usr/bin/perl -w
     
    use Config::Crontab;
    use strict;
    use warnings;
    use CGI;
    use Template;
     
    my ($cgi) = new CGI;
    my ($comments) = $cgi->param("machinerech");
    my $file = 'affiche_block.html';
    my $vars = {
            'machine' => \&recherches,
    };
    sub recherches {
            my $block = new Config::Crontab::Block;
            my $blocksi = new Config::Crontab::Block;
            my @coment = new Config::Crontab::Event;
            my $ct = new Config::Crontab;
            my @Tab;
            my $var;
     
            $ct->read;
     
            for (my $j=0;$j<5000;$j++){
                    ($block) = $ct->select_blocks( -index => $j);
                    if (defined($block) && $block->dump =~ m/$comments/){
                            @Tab = ();
                            for my $obj ( $block->lines) {
                                    push @Tab, $obj->dump;
                                    return \@Tab;
                            }
                    }
                            #my $i = 0;
                            #if  ( @Tab > 0 ) {
                                    #foreach (@Tab) {
                                            #$i++;
                                            #$var = "$i $_";
     
                            #       }
                    #       }
                    #else{
                            #print "bien tu es faux \n";
                    #}
     
            }
    }
    my $template = Template->new({
        # where to find template files
        INCLUDE_PATH => ['/var/www/perl/src', '/var/www/perl/lib'],
        # pre-process lib/config to define any extra values
        PRE_PROCESS  => 'config',
    });
     
     $template->process($file, $vars)
                                    || die "Template process failed: ", $template->error(), "\n";
    et enfin mon template
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    [% INCLUDE header
       title = 'Template Toolkit CGI Test'
    %]
    <p> la machine que vous cherchez est
    [% FOREACH Tab IN machine %]
    [% Tab %]
    [% END %]
    </p>
    [% INCLUDE footer %]
    Merci.

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2007
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 32
    Points : 23
    Points
    23
    Par défaut
    J'ai reussi à afficher l'ensemble de mon tableau.
    j'ai mis le return \@Tabs;
    à la sortie de ma boucle for.
    mais il me les affiche en une seule ligne.
    C'est un peu chiant ça.

Discussions similaires

  1. Template DataPointStyle [WPF Toolkit]
    Par choupi12 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 03/02/2012, 17h01
  2. [Smarty] Problème d'affichage Foreach dans un template sous Smarty
    Par NicoWeb01 dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 19/10/2011, 12h53
  3. [WP7] Toolkit Charting Template d'un Axe
    Par DotNET74 dans le forum Windows Phone
    Réponses: 2
    Dernier message: 03/02/2011, 11h19
  4. Perl template toolkit
    Par pierrot10 dans le forum Modules
    Réponses: 1
    Dernier message: 05/07/2006, 19h18
  5. [XSLT] template
    Par demo dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/09/2002, 12h31

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