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.