web-dev-qa-db-fra.com

Impossible de passer les paramètres dans un fichier php externe

J'essaie de créer un simple formulaire de contact mais je ne peux pas transmettre les paramètres de mon module au fichier externe action="contact.php".


Voici comment j'essaye d'obtenir des paramètres dans un fichier externe:

$app = JFactory::getApplication('site');
$app->initialise();

$session = JFactory::getSession();

jimport( 'joomla.application.module.helper' );

$db = JFactory::getDBO();
$db->setQuery("SELECT params FROM #__modules WHERE module = 'mod_my_contact_form'");

$module = $db->loadObject();
$params = new JRegistry($module->params);

$contact_email = $params->get('myemail');

Le résultat de la print_r('My e-mail: ' . $contact_email); reste vide:

Mon email:


Quelle pourrait être la cause de ce problème?


EDIT: J'ai essayé cette méthode mais sans aucun résultat:

$app = JFactory::getApplication('site');
$app->initialise();

jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModule('mod_my_contact_form');

$registry = new JRegistry();
$params = $registry->loadString($module->params);

$contact_email = $params->get('myemail');

EDIT 2:

Structure du fichier:

mod_my_contact_form/
    tmpl/
       includes/
            contact.php
       default.php
     helper.php
     mod_my_contact_form.php
     mod_my_contact_form.xml

EDIT 3: Je pense que le XML est construit correctement. Voici à quoi ressemble la partie param:

...
    ...
    <fieldset name="contact_form" label="Contact Form">
        <field name="myemail" type="email" label="JGLOBAL_EMAIL" description="E-mail where you will receive all messages" size="30" class="inputbox" validate="email" />
    </fieldset>
   </fields>
  </config>
</extension>
1
Frostbourn

En examinant le fichier XML mis à jour, je ne vois qu'un problème que vous n'avez pas utilisé <fields name="params"></fields> Dans la balise config et par conséquent votre objet modparams est vide. Essayez ci-dessous le fragment xml pour les configs et vérifiez encore une fois les valeurs $module->params.

<config>
<fields name="params">
<fieldset name="contact_form" label="Contact Form">
<field name="myemail" type="email" label="JGLOBAL_EMAIL" description="E-mail where you will receive all messages" size="30" class="inputbox" validate="email" />
</fieldset>
</fields>
</config>

J'espère que cela résoudra votre problème :)

EDIT: En regardant votre commentaire, j'ai essayé de développer moi-même le module. Voici les étapes -

  1. J'ai suivi la structure de fichier donnée en question.
  2. Voici mon xml (mod_my_contact_form.xml)

    <?xml version="1.0" encoding="utf-8"?> <extension version="3.0" type="module" client ="site" method="upgrade"> <name>mod_my_contact_form</name> <files> <filename module="mod_my_contact_form">mod_my_contact_form.php</filename> <filename>index.html</filename> <folder>tmpl</folder> </files> <config> <fields name="params"> <fieldset name="contact_form" label="Contact Form"> <field name="myemail" type="email" label="JGLOBAL_EMAIL" description="E-mail where you will receive all messages" size="30" class="inputbox" validate="email" /> </fieldset> </fields> </config> </extension>

  3. Voici Main PHP du module (mod_my_contact_form.php)

    <?php // No direct access. defined('_JEXEC') or die(); echo "I am from Main File"; //Load default.php require JModuleHelper::getLayoutPath('mod_my_contact_form'); ?>

  4. Voici mon default.php

    <?php echo "<br>I am from Default file"; //Here I have loaded contact.php to send call there. require_once 'modules/mod_my_contact_form/tmpl/includes/contact.php'; ?>

  5. Je n'ai rien fait de différent dans contact.php, Il suffit de déposer votre extrait de code.

    <?php echo "<br>I am from contact php"; $app = JFactory::getApplication('site'); $app->initialise(); jimport( 'joomla.application.module.helper' ); $module = JModuleHelper::getModule('mod_my_contact_form'); $registry = new JRegistry(); $params = $registry->loadString($module->params); $contact_email = $params->get('myemail'); echo "<br>Here is my params Email=> ".$contact_email; ?>

NOTE: je viens d'écrire du code qui doit être appelé dans contact.php car nous voulions obtenir des paramètres dans le fichier contact.php. Par conséquent, ceux requis et tous les autres éléments sont utilisés. Veuillez donc utiliser votre code en conséquence fichiers.

2
Sudhir Sapkal