it-swarm-eu.dev

Sostituisci getError e getErrors obsoleti

Ho esaminato alcuni registri e ho notato che getError () e getErrors () stanno lanciando messaggi deprecati in Joomla 3.3 (abbiamo appena aggiornato). Apparentemente questi sono stati deprecati in Joomla 2.5, ma sto facendo fatica a trovare una soluzione per l'aggiornamento.

Ho dato un'occhiata ai file core di Joomla e anche loro stanno ancora usando getError () e getErrors (). C'è un sostituto per questi, o è come JViewLegacy, ecc. Dove al momento non esiste un'alternativa?

Un esempio in cui lo sto usando è per salvare un utente:

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

Dovresti usare PHP Eccezioni invece. Trovo strano che Joomla generi messaggi deprecati quando si usa JError ma non è ancora usato nel core 3.3.6.

Comunque, il seguente sarebbe un esempio di Eccezioni per una query del database

$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();
}

Questo genererà un errore dicendo che la tabella non esiste perché ho usato #__user Invece di #__users.

Nel tuo caso, proverei quanto segue:

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

$e->getMessage() ovviamente ottiene l'errore, quindi all'interno della cattura, puoi scegliere cosa vuoi fare con esso, come registrarlo o semplicemente visualizzarlo.

3
Lodder