CMS Automne

Forum de la communauté du CMS Automne
Nous sommes actuellement le Jeu Nov 14, 2024 6:10 pm

Le fuseau horaire est UTC [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 10 messages ] 
Auteur Message
MessagePublié: Mar Oct 19, 2010 2:05 pm 
Hors-ligne

Inscrit(e) le : Mar Sep 21, 2010 2:41 pm
Message(s) : 95
Bonjour,

j'ai peut-être pas compris la documentation, mais en tout cas voici une question naïve .

Dans un formulaire j'ai un select-option produit en PHP comme ceci :
Code :
        <select id="affich" name="affich" >
          <?php
            if (isset($_POST['affich']))
            {
              switch ($_POST['affich'])
                  {
                case $typesoin:
                  $chaine = "<option selected>type de soin</option>"
                    ."<option>lieu</option>";
                  break;
                case $lieusoin:
                  $chaine = "<option>type de soin</option>"
                    ."<option selected>lieu</option>";
                  break;
                default:
                  $chaine = "<option selected>type de soin</option>"
                    ."<option>lieu</option>";
              }
            }else
            {
              $chaine = "<option selected>type de soin</option>"
                ."<option>lieu</option>";
            }
            $content .= $chaine;
            ?>
        </select>
Et çà fonctionne très bien.
Mais je me demandais comment faire pour intégrer cela dans la commande <block module="cms_forms" id="blockID" type="formular">...</block>

J'ai essayé en adaptant bien sûr le nom du 'module' et le 'type' , et en créant le fichier PHP correspondant dans le répertoire qui va bien. Mais çà ne donne rien. :|
Ce qui me fait dire que je n'ai pas compris.

Merci d'avance.


Haut
 Profil  
 
MessagePublié: Mar Oct 19, 2010 2:46 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
Bonjour,

Le module formulaire (cms_forms) ne gère pas l'inclusion de PHP dans les rangées. Ça ne fonctionne que pour les modules polymod et pour le module standard.

Tu veux faire quoi précisément ?

Seb


Haut
 Profil  
 
MessagePublié: Jeu Oct 21, 2010 8:20 am 
Hors-ligne

Inscrit(e) le : Mar Sep 21, 2010 2:41 pm
Message(s) : 95
Bonjour Sébastien,

et merci pour le complément d'info. :D

le code PHP que tu as vu me permet de définir 2 options possibles pour mon SELECT.

En fonction de l'option choisie par l'internaute, et validée par le bouton "Executer" , cela affiche un tableau de 2 manières différentes. En l'occurrence, les mêmes infos seront présentées à l'écran soit par région géographique, soit par type d'activité.

C'est pourquoi j'ai injecté directement ce code PHP dans le formulaire.
Et compte tenu du choix de l'internaute, je place donc la propriété 'selected' sur la bonne option pour pouvoir ré-afficher ce choix lors du renvoi de la page par le serveur. Une façon de dire à l'internaute < vous avez choisi l'option d'affichage N° 1, voici donc le tableau correspondant >

Je cherchais le moyen éventuel de séparer le code PHP de la rangée de contenu. Il y a bien sûr la possibilité d'utiliser les catégories en créant 2 catégories pour cet usage et un objet supplémentaire dans mon polymod. Cela fonctionne très bien et permet de ne pas avoir de code PHP qui traîne dans la rangée de contenu, mais je trouve cela un peu ridicule car pas très approprié, les 2 catégories ajoutées n'étant pas de réelles catégories mais plutôt une ruse pour gérer un affichage .

C'est la raison pour laquelle je me suis résolu à coder en dur du PHP dans la rangée de contenu.

Voili, voilou :)


Haut
 Profil  
 
MessagePublié: Jeu Oct 21, 2010 8:28 am 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
ok, mais alors pourquoi le mettre dans un block du module cms_forms ? As tu des données en provenance de ce module à récupérer ? Si ça n'est pas le cas, enlève simplement ce tag block.


Haut
 Profil  
 
MessagePublié: Jeu Oct 21, 2010 1:03 pm 
Hors-ligne

Inscrit(e) le : Mar Sep 21, 2010 2:41 pm
Message(s) : 95
Oui c'est ce que je disais. Comme le tag block ne donnait aucun résultat, je l'ai donc enlevé et j'ai codé en dur les lignes PHP pour traiter le SELECT.

J'avais simplement pas bien intégré que le tag block pour l'inclusion de PHP ne pouvait être utilisé qu'à l'intérieur même d'un POLYMOD et pas en dehors.

Autant pour moi donc :wink:


Haut
 Profil  
 
MessagePublié: Jeu Oct 21, 2010 1:08 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
Non, en fait chaque tag block fait référence à un module (via l'attribut module du tag). Chaque module offre ensuite des capacités qui lui sont propres à l'intérieur de ce tag block. Mais si tu ne veux pas faire référence à des fonctions spécifiques d'un module particulier, rien ne t'oblige à employer des tags blocks dans tes rangées, tu peux très bien avoir quelque chose de ce genre là :
Code :
<row>
<?php
 ...
?>
</row>


Haut
 Profil  
 
MessagePublié: Jeu Oct 21, 2010 4:38 pm 
Hors-ligne

Inscrit(e) le : Mar Sep 21, 2010 2:41 pm
Message(s) : 95
Ah oui cette fois j'ai pigé :P

Du coup j'avais bon quand j'écrivais :
Code :
<row>
<block module="pplan" id="docssearch" language="fr">
    <atm-setvar vartype="var" varname="typesoin" value="type de soin" />
    <atm-setvar vartype="var" varname="lieusoin" value="lieu" />
    <!--Search form-->
    <div id="docssearch">
      <form action="{page:self:url}" method="post">
        <h3>Rechercher des documents : </h3>
        <label for="cat">Type de soins : </label>
        <select id="cat" name="cat">
          <option value=""></option>
          <atm-function function="selectOptions" object="{planifier:Type_de_technique}" selected="{request:int:cat}"></atm-function>
        </select>
        <label for="affich">&nbsp;&nbsp;&nbsp;&nbsp;Affichage par : </label>
        <select id="affich" name="affich" >
          <?php
            if (isset($_POST['affich']))
            {
              $affich = $_POST['affich'];
              switch ($_POST['affich'])
                  {
                case $typesoin:
                  $chaine = "<option selected>type de soin</option>"
                    ."<option>lieu</option>";
                  break;
                case $lieusoin:
                  $chaine = "<option>type de soin</option>"
                    ."<option selected>lieu</option>";
                  break;
                default:
                  $chaine = "<option selected>type de soin</option>"
                    ."<option>lieu</option>";
              }
            }else
            {
              $affich = $typesoin;
              $chaine = "<option selected>type de soin</option>"
                ."<option>lieu</option>";
            }
            $content .= $chaine;
            ?>
        </select>
        ........
</block>
</row>
Car j'avais besoin de mon module 'pplan' et de ses propriétés, et j'avais aussi besoin de lignes PHP spécifiques. Mais j'ai bien compris que si l'usage d'un module ne se justifiait pas j'aurais pu coder directement une séquence PHP à l'intérieur de <row></row>

Par contre, si ma séquence PHP était longue et risquait de rendre la lecture du code fastidieuse, rien ne m'empêcherait de placer tout mon code PHP dans un fichier à part nommé par exemple 'monfichier.php' et de l'appeler de cette façon :
<?php require_once ("/automne/templates/monfichier.php");?> en plaçant cette ligne de code à l'endroit qui va bien dans ma rangée de contenu. J'ai supposé ici que le fichier était placé dans /automne/templates/ (pourquoi pas !) J'ai bon là ?

Par contre, dans mon cas et juste pour l'exercice l'ai ajouté à la fin de ma rangée un block comme ceci :
<block module="pplan" id="unID" type="test"></block>
et j'ai créé le fichier mod_pplan_test.php dans le répertoire /automne/templates/ .
Ce fichier contient seulement le code suivant : <?php echo 'TOTO'; ?>
Et j'ai testé, mais rien ne s'affiche. :(
En revanche, la ligne de code <block ...></block> n'apparaît pas dans le code XHTML de la page affichée, et c'est plutôt encourageant.

Excuses moi d'être un peu lourd sur le sujet mais je sens que cela pourrait bien m'être d'une utilité dans un futur proche. :|


Haut
 Profil  
 
MessagePublié: Jeu Oct 21, 2010 5:08 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Mer Juin 15, 2005 8:28 am
Message(s) : 759
Localisation : Sophia Antipolis
pdub75 a écrit:
Par contre, si ma séquence PHP était longue et risquait de rendre la lecture du code fastidieuse, rien ne m'empêcherait de placer tout mon code PHP dans un fichier à part nommé par exemple 'monfichier.php' et de l'appeler de cette façon :
<?php require_once ("/automne/templates/monfichier.php");?> en plaçant cette ligne de code à l'endroit qui va bien dans ma rangée de contenu. J'ai supposé ici que le fichier était placé dans /automne/templates/ (pourquoi pas !) J'ai bon là ?

Oui, ça c'est bon.

pdub75 a écrit:
Par contre, dans mon cas et juste pour l'exercice l'ai ajouté à la fin de ma rangée un block comme ceci :
<block module="pplan" id="unID" type="test"></block>
et j'ai créé le fichier mod_pplan_test.php dans le répertoire /automne/templates/ .
Ce fichier contient seulement le code suivant : <?php echo 'TOTO'; ?>
Et j'ai testé, mais rien ne s'affiche. :(
En revanche, la ligne de code <block ...></block> n'apparaît pas dans le code XHTML de la page affichée, et c'est plutôt encourageant.


Hum, comme je te disais, chaque module a des capacités spécifiques au niveau du tag block.

- le module formulaire (cms_forms) ne gère pas le PHP à l'intérieur du tag block.
- les modules polymod ne gèrent pas l'inclusion de PHP via l'attribut type. Pour faire ça, il faudrait que tu créé un module spécifique (en PHP) qui pourrait gérer cette fonction spécifique. Cette fonction a été implémentée dans le module "Moteur de recherche" par exemple (http://doc.automne.ws/web/Documentation ... module=276)


Haut
 Profil  
 
MessagePublié: Jeu Oct 21, 2010 5:36 pm 
Hors-ligne

Inscrit(e) le : Mar Sep 21, 2010 2:41 pm
Message(s) : 95
Ah ben là je touche aux limites du raisonnable, du moins à mon niveau.

Je m'en tiendrai donc à ce que tu m'a déjà dit précédemment. Du code PHP en direct si nécessaire. Cà marche très bien comme çà !

Merci beaucoup en tout cas pour tous ces détails. :P

Et bonne soirée à toi :wink:


Haut
 Profil  
 
MessagePublié: Jeu Oct 21, 2010 5:49 pm 
Hors-ligne
Administrateur
Avatar de l’utilisateur

Inscrit(e) le : Jeu Juin 16, 2005 8:05 am
Message(s) : 628
Localisation : Toulouse, France
Te prive pas, on aborde justement des sujets intéressants sur le développement avec Automne ;)

_________________
Frank
http://www.automne-cms.org


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 10 messages ] 

Le fuseau horaire est UTC [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 10 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Recherche de:
Aller vers :  
Powered by phpBB® Forum Software © phpBB Group
Traduit par Maël Soucaze et Elglobo © phpBB.fr