Заменить устаревшие getError и getErrors

Я просматривал несколько журналов и заметил, что getError () и getErrors () бросают устаревшие сообщения в Joomla 3.3 (мы только что обновили). По-видимому, они устарели в Joomla 2.5, но мне сложно найти решение для обновления.

Я просмотрел основные файлы Joomla, и даже они все еще используют getError () и getErrors (). Есть ли замена для них, или это похоже на JViewLegacy и т. Д., Где на данный момент нет альтернативы?

Пример, где я использую его, - это сохранение пользователя:

if (!$user->save()) {
        $error = $user->getError();
        ...
}
8 голосов | спросил DemonGyro 20 +04002014-10-20T21:38:47+04:00312014bEurope/MoscowMon, 20 Oct 2014 21:38:47 +0400 2014, 21:38:47

1 ответ


3

Вместо этого следует использовать исключения PHP. Мне показалось странным, что Joomla выдает устаревшие сообщения при использовании JError, но пока не используется в ядре 3.3.6.

В любом случае, ниже будет пример Исключения для запроса к базе данных

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

Это вызовет ошибку, говорящую, что таблица не существует, потому что я использовал #__user вместо #__users.

В вашем случае я бы попробовал следующее:

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

$e->getMessage(), конечно, получает ошибку, поэтому внутри catch вы можете выбрать, что вы хотите с ней сделать, например, зарегистрировать его или просто отобразить.

ответил Lodder 20 +04002014-10-20T23:12:20+04:00312014bEurope/MoscowMon, 20 Oct 2014 23:12:20 +0400 2014, 23:12:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132