web-dev-qa-db-fra.com

Joomla - PHP + $ ceci enveloppé en Javascript.

Voici le script que j'ai. J'essaie de le charger après l'affichage de la page. J'essaie d'exécuter PHP le code de javascript. Ce dont j'ai besoin, c'est d'obtenir l'adresse électronique de l'utilisateur qui a soumis le formulaire au contrôle de la zone de texte.

var originator_email = document.getElementById("jform_sendto_first_step");
 originator_email.value = "<?php  echo JFactory::getUser($this->item->created_by)->get('email'); ?>"

C'est l'erreur que j'ai. en utilisant $ this quand pas dans le contexte de l'objet bla bla bla. Quelle est la bonne façon de faire cela?

J'ai essayé d'inclure le code:

<?php  echo JFactory::getUser($this->item->created_by)->get('email'); ?>

dans la page directement et je peux le voir jeter le résultat à l'écran sans problèmes.

3
Oleg Agadjanyan

Comme le dit Lodder, vous ne pouvez pas vous attendre à ce qu'un fichier .js (qui est exécuté dans le navigateur) s'exécute PHP - qui est exécuté sur le serveur.

La solution la plus simple consiste à renvoyer votre code javascript côté serveur. Ainsi, dans le fichier index.php de votre modèle, quelque part dans la section, ajoutez ce qui suit:

<script type="text/javascript">
<?php  echo JoomlaEmail = "' . JFactory::getUser($this->item->created_by)->get('email') . "';"; ?>
</script>

when PHP exécute votre fichier de modèle, il doit être écrit dans le navigateur de la manière suivante:

<script type="text/javascript">
JoomlaEmail = "[email protected]";
</script>

Maintenant, dans votre code javascript original, vous devriez pouvoir faire:

var originator_email = document.getElementById("jform_sendto_first_step");
originator_email.value = JoomlaEmail;

En procédant de cette façon, vous polluez l’espace de noms global Javascripts, ce qui n’est pas vraiment chose faite, mais vous devriez pouvoir utiliser cette méthode pour écrire du code JS dans le fichier PHP qui est encapsulé). à l'intérieur d'une fonction.

<script type="text/javascript">
(function () {
    var originator_email = document.getElementById("jform_sendto_first_step");
    originator_email.value = "<?php  echo JFactory::getUser($this->item->created_by)->get('email'); ?>"
})();
</script>
2
Rob Clayburn