Substituir getError e getErrors obsoletos


8

Eu estive examinando alguns logs e notei que getError () e getErrors () estão lançando mensagens obsoletas no Joomla 3.3 (acabamos de atualizar). Aparentemente, eles foram preteridos no Joomla 2.5, mas estou tendo dificuldade em encontrar uma solução para atualizar.

Dei uma olhada nos arquivos principais do Joomla e eles ainda estão usando getError () e getErrors (). Existe um substituto para eles, ou é como o JViewLegacy etc. onde não há alternativa no momento?

Um exemplo em que estou usando é para salvar um usuário:

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

Respostas:


3

Você deve usar as exceções do PHP. Acho estranho que o Joomla lance mensagens obsoletas quando o uso JErrorainda não é usado no núcleo 3.3.6.

De qualquer forma, o abaixo seria um exemplo de exceções para uma consulta ao banco de dados

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

Isso gerará um erro dizendo que a tabela não existe porque eu usei em #__uservez de #__users.

No seu caso, eu tentaria o seguinte:

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

$e->getMessage() é claro que obtém o erro; portanto, dentro do problema, você pode escolher o que deseja fazer com ele, como registrá-lo ou simplesmente exibi-lo.


$ E-> getMessage () retornará as mesmas mensagens de erro que a chamada getError () (localizada também)?
DemonGyro

Encontrei tempo para implementar as alterações sugeridas e não funcionou. save () não está lançando os erros que estou esperando como exceções, portanto o código de captura nunca é executado.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.