web-dev-qa-db-fra.com

Développement de plugin - Erreur d'analyse: erreur de syntaxe, 's' inattendu (T_STRING)

Je suis en train de développer mon premier plugin pour Joomla, c'est juste un simple plugin qui place du javascript juste avant la fermeture du corps. Le javascript fonctionne bien si je le place directement dans le fichier index.php pour le modèle, donc je suis confiant dans le js. Mon plugin cependant jette une erreur

Parse error: syntax error, unexpected 's' (T_STRING) in C:\xampp\blah\blah\plugins\system\reftagger\reftagger.php on line 50

Je pense que cela a à voir avec l’utilisation des guillemets doubles sur la ligne 49 (où elle ajoute le g.src), ce qui jette les choses à l’écart. L'extrait ci-dessous montre le script que je tente d'ajouter, qui inclut les guillemets

 $ReftaggerOut = "
            <script type='text/javascript'>
                var refTagger = {
                    settings: {
                        bibleVersion: ".$BibleTranslation."            
                    }
                };
                (function(d, t) {
                    var g = d.createElement(t), s = d.getElementsByTagName(t)[0];
                    g.src = "//api.reftagger.com/v2/RefTagger.js";
                    s.parentNode.insertBefore(g, s);
                }(document, "script"));

            </script>

    ";      

J'ai essayé

  1. changer le g.src en un seul crochet
  2. faites un/"pour le g.src
2
rowanwins

Ce sont les guillemets doubles dans le script/chaîne. Essaye ça:

<?php
$ReftaggerOut = "
    <script type='text/javascript'>
        var refTagger = {
            settings: {
            bibleVersion: ".$BibleTranslation."            
            }
        };
        (function(d, t) {
            var g = d.createElement(t), s = d.getElementsByTagName(t)[0];
            g.src = '//api.reftagger.com/v2/RefTagger.js';
            s.parentNode.insertBefore(g, s);
        }(document, 'script'));
    </script>
";
?>

Ou si vous voulez les guillemets doubles, les échappe comme ceci:

$ReftaggerOut = "
    <script type='text/javascript'>
        var refTagger = {
            settings: {
            bibleVersion: ".$BibleTranslation."            
            }
        };
        (function(d, t) {
            var g = d.createElement(t), s = d.getElementsByTagName(t)[0];
            g.src = \"//api.reftagger.com/v2/RefTagger.js\";
            s.parentNode.insertBefore(g, s);
        }(document, \"script\"));
    </script>
";
4
GDP

Je me rends compte que vous avez résolu le problème d'erreur de syntaxe, mais la bonne façon de le résoudre consiste à ne pas insérer le javascript avec PHP de cette façon.

Ce que vous devriez faire, c'est:

1) créez votre fichier javascript dans media/plg_yourplugin/js/your-js-file.js

2) in PHP utilisez l’API de la bibliothèque JHTML pour ajouter le fichier javascript à la zone index.php.

Voici un article de blog de @Michael sur la façon de le faire correctement: http://www.babdev.com/blog/139-use-the-media-folder-allow-overridable-media

3
Chad Windnagle

Vous avez une erreur d'analyse PHP.

Si votre chaîne commence par " et se termine par ". Tous les internes " doit être \".

0
Anibal