web-dev-qa-db-fra.com

0 - Utiliser $ this sans contenu d'objet

J'ai déplacé un site Web d'un serveur (PHP 5.6.38) à localhost (PHP 7.2.10). Et je reçois cette erreur dans le titre de la page (dans l'onglet chrome)):

0 - Utiliser $ this sans contenu d'objet

Lors d'une recherche en ligne, j'ai constaté que je devais remplacer toutes les occurrences de JSite::getMenu() par JFactory::getApplication()->getMenu(). Je l'ai fait sans succès. J'ai changé le thème et l'erreur a disparu, c'est donc probablement quelque chose avec le thème. J'ai essayé de modifier le thème mais je reçois cette erreur:

Une erreur est survenue.

0 erreur de syntaxe, '}' inattendu, attente de elseif (T_ELSEIF) ou sinon (T_ELSE) ou endif (T_ENDIF)

Retour au Panneau de configuration

Mais il n'y a aucune information où cette erreur est.

J'ai téléchargé à nouveau les fichiers de modèle à partir du serveur, je remplace les fichiers locaux mais j'ai toujours la même erreur, alors que sur le serveur live, il n'y a pas d'erreur

EDIT

J'ai activé error_reporting et je reçois cette erreur:

Erreur d'analyse: erreur de syntaxe, '}' inattendu dans C: ...\html\modules.php à la ligne 64

Le problème est que le fichier est identique à celui sur le serveur et sur le serveur, je ne reçois aucune erreur ...

Voici le code:

function modChrome_myCatMod($module, &$params, &$attribs)
{
    $moduleTag      = $params->get('module_tag', 'div');
    $headerTag      = htmlspecialchars($params->get('header_tag', 'h3'));
    $bootstrapSize  = (int) $params->get('bootstrap_size', 0);
    $moduleClass    = $bootstrapSize != 0 ? ' span' . $bootstrapSize : '';

    // Temporarily store header class in variable
    $headerClass    = $params->get('header_class');
    $headerClass    = ($headerClass) ? ' class="' . htmlspecialchars($headerClass) . '"' : '';

    if (!empty ($module->content)) : ?>
        <<?php echo $moduleTag; ?> class="moduletable<?php echo htmlspecialchars($params->get('moduleclass_sfx')) . $moduleClass; ?>" id="Mod<?php echo $module->id;?>">
            <?php if ((bool) $module->showtitle) : ?>
                <?php $com_content_categories = $params->get('com_content_categories'); if(!empty($com_content_categories)): 
                    $caturl = ContentHelperRoute::getCategoryRoute ( $com_content_categories[0] );
                ?>
                <<?php echo $headerTag . $headerClass . '>' ?><a href="<?php echo $caturl;?>"><?php  echo $module->title; ?></a></<?php echo $headerTag; ?>>                                                    
                <?php else : ?>             
                <<?php echo $headerTag . $headerClass . '>' . $module->title; ?></<?php echo $headerTag; ?>>                    
                <? endif;?>

            <?php endif; ?><?php echo $module->content; ?>
        </<?php echo $moduleTag; ?>>
    <?php endif; 
}     //////////////////////////////////error line
2
dvn22

Ne me citez pas là-dessus, mais j'ai l'impression que cela peut être dû au mélange d'accolades et de syntaxe alternative.

J'ai réécrit votre modChrome en utilisant des accolades:

function modChrome_myCatMod($module, &$params, &$attribs)
{
    $moduleTag      = $params->get('module_tag', 'div');
    $headerTag      = htmlspecialchars($params->get('header_tag', 'h3'));
    $bootstrapSize  = (int) $params->get('bootstrap_size', 0);
    $moduleClass    = $bootstrapSize != 0 ? ' span' . $bootstrapSize : '';

    // Temporarily store header class in variable
    $headerClass    = $params->get('header_class');
    $headerClass    = ($headerClass) ? ' class="' . htmlspecialchars($headerClass) . '"' : '';

    if (!empty ($module->content))
    {
        echo '<' . $moduleTag . ' class="moduletable' . htmlspecialchars($params->get('moduleclass_sfx')) . $moduleClass . '" id="Mod' . $module->id . '">';
            if ((bool) $module->showtitle)
            {
                $com_content_categories = $params->get('com_content_categories');

                if (!empty($com_content_categories))
                {
                    $caturl = ContentHelperRoute::getCategoryRoute($com_content_categories[0]);
                    echo '<' . $headerTag . $headerClass . '><a href="' . $caturl . '">' . $module->title . '</a></' . $headerTag . '>';
                }
                else
                {
                    echo '<' . $headerTag . $headerClass . '>' . $module->title . '</' . $headerTag . '>';
                }

                }
            echo $module->content;
        echo '</' . $moduleTag . '>';
    }
}

J'espère que cela résout le problème.

Cela dit, si vous n'avez pas fourni le contenu intégral de ce fichier dans votre question, je vous conseillerais de le faire, car l'erreur peut en réalité provenir d'une ligne différente.

1
Lodder