Sostituisci getError obsoleto e getErrors


8

Ho esaminato alcuni registri e ho notato che getError () e getErrors () stanno lanciando messaggi obsoleti in Joomla 3.3 (che 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 usano ancora getError () e getErrors (). Esiste un sostituto di 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();
        ...
}

Risposte:


3

Dovresti invece usare Eccezioni PHP. Trovo strano che Joomla generi messaggi deprecati quando lo si utilizza JErrorma non è ancora utilizzato 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 al #__userposto 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 viene visualizzato l'errore, quindi all'interno della cattura, è possibile scegliere cosa si desidera farne, ad esempio registrarlo o semplicemente visualizzarlo.


$ E-> getMessage () restituirà gli stessi messaggi di errore della chiamata getError () (anche localizzata)?
DemonGyro,

Ho trovato il tempo per implementare le modifiche che hai suggerito e non ha funzionato. save () non sta gettando gli errori che mi aspetto come eccezioni, quindi il codice catch non viene mai eseguito.
DemonGyro,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.