Remplacer getError et getErrors déconseillés


8

J'ai parcouru certains journaux et j'ai remarqué que getError () et getErrors () lançaient des messages obsolètes dans Joomla 3.3 (nous venons de mettre à jour). Apparemment, ceux-ci étaient obsolètes dans Joomla 2.5, mais j'ai du mal à trouver une solution à mettre à jour.

J'ai jeté un œil aux fichiers de base de Joomla et même ils utilisent toujours getError () et getErrors (). Y a-t-il un remplacement pour ceux-ci, ou est-ce comme JViewLegacy, etc. où il n'y a pas d'alternative pour le moment?

Un exemple où je l'utilise est pour sauver un utilisateur:

if (!$user->save()) {
        $error = $user->getError();
        ...
}

Réponses:


3

Vous devez utiliser des exceptions PHP à la place. Je trouve étrange que Joomla lance des messages obsolètes lors de son utilisation JErrormais n'est pas encore utilisé dans le noyau 3.3.6.

Quoi qu'il en soit, ce qui suit serait un exemple d'exceptions pour une requête de base de données

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('username')))
      ->from($db->quoteName('#__user'))
      ->where($db->quoteName('username') . ' = ' . $db->quote('Lodder'));
$db->setQuery($query);

try
{
    // Try to get an object based on the results from the database
    $results = $db->loadObjectList();
    print_r($results);
}
catch (Exception $e)
{
    // Start crying cause it didn't work
    echo $e->getMessage();
}

Cela générera une erreur indiquant que la table n'existe pas car j'ai utilisé à la #__userplace de #__users.

Dans votre cas, j'essaierais ce qui suit:

try
{
    $user->save();
    // redirect or do something magical
}
catch (Exception $e)
{
    echo $e->getMessage();
}

$e->getMessage() obtient bien sûr l'erreur, donc à l'intérieur de la capture, vous pouvez choisir ce que vous souhaitez en faire, comme l'enregistrer ou simplement l'afficher.


$ E-> getMessage () renverra-t-il les mêmes messages d'erreur que l'appel getError () (également localisé)?
DemonGyro

J'ai trouvé le temps de mettre en œuvre les changements que vous avez proposés et cela n'a pas fonctionné. save () ne lance pas les erreurs que j'attends en tant qu'exceptions, donc le code catch n'est jamais exécuté.
DemonGyro
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.