PluXml.org

Blog ou CMS à l'Xml

Vous n'êtes pas identifié(e).

#1 11/03/2017 13:23:46

légume
Membre
Inscription : 07/02/2017
Messages : 20

Erreur formulaire

Bonjour, j'ai un petit soucis.

Lorsque je crée mon formulaire dans mon plugin il me met l'erreur :

Fatal error: Class 'plxToken' not found in /

Pourtant j'utilise bien

[== Indéfini ==]
plxToken::validateFormToken($_POST);

pour le contrôle du token du formulaire et

[== Indéfini ==]
<?php echo plxToken::getTokenPostMethod() ?>
			<input type="submit" name="submit" value="Valider" />

sur mon bouton qui enregistre les donnée du formulaire.

Je place ce code dans le fichier principal du plugin et ce formulaire sera afficher dans la partie public du site.

Quand je met mon formulaire dans le fichier config tout fonctionne ce qui est très bizarre.

Merci d'avance

Hors ligne

#2 11/03/2017 16:51:25

Stéphane
Responsable du projet
Lieu : pas loin de Metz
Inscription : 07/08/2007
Messages : 6 117
Site Web

Re : Erreur formulaire

Bonjour

le fichier config.php est un fichier géré par le moteur des plugins de PluXml. La classe plxToken est donc chargée automatiqement par PluXml. Si ton formulaire est placé dans un autre fichier (donc non connu par le moteur de Plugins), il faut que tu fasses toi meme l'include du fichier class.plx.token.php pour que ces instructions fonctionnent


Mes articles et tutoriels pour PluXml
Pluxopolis mon site sur PluXml, mais pas seulement...
Twitter: @pluxopolis

Hors ligne

#3 11/03/2017 17:29:00

légume
Membre
Inscription : 07/02/2017
Messages : 20

Re : Erreur formulaire

J'ai fais ce code :

[== Indéfini ==]
include(dirname(__FILE__).'/class.plx.token.php');

mais ça me redonne l'erreur.

Je te donne tout le code qui se trouve au-dessus du formulaire :

[== Indéfini ==]
<?php 


include(dirname(__FILE__).'/class.plx.token.php');



class BonAchat extends plxPlugin {
	

    public function __construct($default_lang){
    # Appel du constructeur de la classe plxPlugin (obligatoire)
    parent::__construct($default_lang);


    # Pour accéder à une page de configuration
    $this->setConfigProfil(PROFIL_ADMIN,PROFIL_MANAGER);


    # Déclaration des hooks

    $this->addHook('BonAchat', 'BonAchat');
    $this->addHook('ThemeEndHead', 'ThemeEndHead');
    $this->addHook('ThemeEndBody', 'ThemeEndBody');
    $this->addHook('AdminTopEndHead', 'AdminTopEndHead');


    }

    public function AdminTopEndHead() { ?>
        <link rel="stylesheet" href="<?php echo PLX_PLUGINS ?>BonAchat/app/BonAchat-admin.css">
    <?php }


    public function ThemeEndHead() { ?>
           <link rel="stylesheet" href="<?php echo PLX_PLUGINS ?>BonAchat/app/BonAchat.min.css">
    <?php }
	
	
    public function BonAchat(){ 

	plxToken::validateFormToken($_POST);
$nbbon = floor(sizeof($plxPlugin->getParams())/4);
	
	
if(!empty($_POST)) {
if (!empty($_POST['bon-new']) AND !empty($_POST['name-new']) AND !empty($_POST['prenom-new']) AND !empty($_POST['telephone-new']) AND !empty($_POST['email-new']) 
AND !empty($_POST['pays-new']) AND !empty($_POST['nameC-new']) AND !empty($_POST['prenomC-new']) AND !empty($_POST['telephoneC-new']))  {

        # création d'un nouveau evenement
        $newbon= $nbbon + 1;
		$plxPlugin->setParam('date'.$newbon, plxUtils::strCheck($_POST['date-new']), 'cdata');
		$plxPlugin->setParam('bon'.$newbon, plxUtils::strCheck($_POST['bon-new']), 'cdata');
        $plxPlugin->setParam('name'.$newbon, plxUtils::strCheck($_POST['name-new']), 'cdata');
		$plxPlugin->setParam('code'.$newbon, plxUtils::strCheck($_POST['code-new']), 'cdata');
        $plxPlugin->saveParams();
        
	}else{
        
        # Mise à jour des reponses existants
        for($i=1; $i<=$nbbon; $i++) {
            if(
				(
						!isset($_POST['delete'.$i])
					|| 	($_POST['delete'.$i] != "1")
				)
				AND !empty($_POST['bon'.$i])
			){ 

                
                #mise a jour du question et reponse
                $plxPlugin->setParam('date'.$i, plxUtils::strCheck($_POST['date'.$i]), 'cdata');
                $plxPlugin->setParam('bon'.$i, plxUtils::strCheck($_POST['bon'.$i]), 'cdata');
                $plxPlugin->setParam('name'.$i, plxUtils::strCheck($_POST['name'.$i]), 'cdata');
				$plxPlugin->setParam('code'.$i, plxUtils::strCheck($_POST['code'.$i]), 'cdata');
                $plxPlugin->saveParams();
            
            }elseif(isset($_POST['delete'.$i]) && ($_POST['delete'.$i] == "1")){
                $plxPlugin->setParam('date'.$i, '', '');
                $plxPlugin->setParam('bon'.$i, '', '');
                $plxPlugin->setParam('name'.$i, '', '');
                $plxPlugin->setParam('code'.$i, '', '');				
                $plxPlugin->saveParams();
            }
        } // fin  for($i=1; $i<=$nbevents; $i++) {
    }

}
$nbbon = floor(sizeof($plxPlugin->getParams())/4);

	?>

Merci pour ta réponse wink

Hors ligne

#4 11/03/2017 17:52:35

Stéphane
Responsable du projet
Lieu : pas loin de Metz
Inscription : 07/08/2007
Messages : 6 117
Site Web

Re : Erreur formulaire

légume a écrit :
[== Indéfini ==]
include(dirname(__FILE__).'/class.plx.token.php');

veux dire que l'inclusion se fait par rapport au fichier qui contient l'instruction
or class.plx.token.php est dans le dossier /core/lib/
tel que c'est écrit le chemin n'est pas bon, car par rapport à ton plugin c'est dans ../../core/lib/

donc fait plutôt

include PLX_CORE.'class.plx.token.php';

apres faut peut etre adapter en fonction d'où est placé ton fichier pour avoir le bon chemin


Mes articles et tutoriels pour PluXml
Pluxopolis mon site sur PluXml, mais pas seulement...
Twitter: @pluxopolis

Hors ligne

#5 11/03/2017 18:19:44

légume
Membre
Inscription : 07/02/2017
Messages : 20

Re : Erreur formulaire

Merci encore wink

Mais ça ne fonctionne pas mon fichier est dans plugins/BonAchat/BonAchat.php

Hors ligne

#6 11/03/2017 21:20:59

légume
Membre
Inscription : 07/02/2017
Messages : 20

Re : Erreur formulaire

A moins que tu parle du fichier class.plx.token.php qui lui est dans le fichier lib du fichier core de Pluxml

Hors ligne

#7 12/03/2017 00:15:22

bazooka07
Membre
Lieu : Quelque part en Rhône-Alpes
Inscription : 06/02/2014
Messages : 537
Site Web

Re : Erreur formulaire

Pour ton plugin BonAchat, tu dois avoir dans le dossier plugins/BonAchat/, les fichiers suivants :

  • BonAchat.php, qui contient la class de ton plugin extends de plxPlugin

  • config.php qui contient ton formulaire

  • infos.xml

  • ....

et dans ton fichier config.php du gères ton formulaire :

[== PHP ==]
<?php
if(! defined('PLX_ROOT') { exit; }

plxToken::validateFormToken($_POST);

if(! empty($_POST)) {
   // on sauvegarde les paramètres avec $plxPlugin->setParam($paramNom, $param
  foreach($_POST as $nom=>$valeur) {
     // $type à choisir entre string, numeric, cdata selon $nom
    $plxPlugin->setParam($nom, $valeur, $type);
  }
  $plxPlugin->saveParams();
  header('Location: parametres_plugin?p='.$plugin);
  exit;
}
<form id="form_<?php echo $plugin; ?>" method="post">
      <!-- autant de fois qu'il y a de noms -->
     <p>
         <label for="id_nom1">nom1</label><input id="id_nom1" name="nom1" type="text" value="<?php echo $plxPlugin->getParam("nom1"); />
    </p>
    <!-- et pour soumettre le formulaire -->
    <p>
       <?php echo plxToken::getTokenPostMethod(); ?>
      <input type="submit" />
   </p>
</form>
?>

Il n'y  pas d'include à ajouter si tu as mis tes fichiers au bon endroit

Cliques ici pour lire le manuel


Geek à temps perdu, ubuntero en plus
( Un site hébergé chez LWS | un site en cours chez OVH | La plateforme de test chez FREE )
Bananapi, Orangepi, Raspberrypi
https://github.com/bazooka07/PluXml

Hors ligne

#8 12/03/2017 13:26:05

légume
Membre
Inscription : 07/02/2017
Messages : 20

Re : Erreur formulaire

Le formulaire je souhaite l'afficher en public sur le site c'est pour ça que je voulais le mettre dans le fichier extends de plxPlugin.

Si je le met dans le fichier config comment le mettre dans la partie public du site.

Encore merci de vos réponses wink

Hors ligne

#9 12/03/2017 14:19:27

Stéphane
Responsable du projet
Lieu : pas loin de Metz
Inscription : 07/08/2007
Messages : 6 117
Site Web

Re : Erreur formulaire

Regarde comment fait est le plugin plxMyContact.
ça te donnera un exemple pour mettre un formulaire coté public


Mes articles et tutoriels pour PluXml
Pluxopolis mon site sur PluXml, mais pas seulement...
Twitter: @pluxopolis

Hors ligne

#10 14/03/2017 12:30:42

légume
Membre
Inscription : 07/02/2017
Messages : 20

Re : Erreur formulaire

J'ai regarder le plugin plxMyContact je voie que le formulaire est crée et gérer via le fichier form.contact.php mais je ne voie pas comment tu fais pour l'afficher dans la partie public si quelqu'un peut m'éclairer svp.

Hors ligne

#11 14/03/2017 12:50:11

Stéphane
Responsable du projet
Lieu : pas loin de Metz
Inscription : 07/08/2007
Messages : 6 117
Site Web

Re : Erreur formulaire

il faut le code de la methode plxShowConstruct , plxMotorPreChauffageBegin et plxShowStaticListEnd

plxShowConstruct et plxMotorPreChauffageBegin permettent de créer dynamiquement une entrée dans le tableau $plxMotor->aStats pour faire croire qu'on a une page statique (comme si elle avait été créée par l'interface de gestion des pages statiques dans l'admin) et d'afficher la page quand on va cliquer sur le menu

plxShowStaticListEnd affiche le menu de la page de contact coté visiteur à coté des menus des pages statiques


Mes articles et tutoriels pour PluXml
Pluxopolis mon site sur PluXml, mais pas seulement...
Twitter: @pluxopolis

Hors ligne

#12 14/03/2017 13:12:08

bazooka07
Membre
Lieu : Quelque part en Rhône-Alpes
Inscription : 06/02/2014
Messages : 537
Site Web

Re : Erreur formulaire

@Legume,

Je ne suis pas sûr de bien comprendre ta demande :

  • Propose tu des bons d'achat aux visiteurs de ton site

  • ou les visiteurs de ton site demandent le remboursement de bon d'achats


Geek à temps perdu, ubuntero en plus
( Un site hébergé chez LWS | un site en cours chez OVH | La plateforme de test chez FREE )
Bananapi, Orangepi, Raspberrypi
https://github.com/bazooka07/PluXml

Hors ligne

#13 14/03/2017 13:16:27

légume
Membre
Inscription : 07/02/2017
Messages : 20

Re : Erreur formulaire

Les visiteurs pourront sur le site directement acheter des bons d'achat qui pourront être utiliser en magasin, d'où l'utilisation d'un formulaire sur le site.

Hors ligne

#14 18/03/2017 10:53:44

légume
Membre
Inscription : 07/02/2017
Messages : 20

Re : Erreur formulaire

Quelqu'un aurais une idée ?

Hors ligne

Pied de page des forums

A propos Nous soutenir Contact Twitter Google+
Copyright © 2006-2017 PluXml.org, tous droits réservés