web-dev-qa-db-ja.com

非推奨のgetErrorとgetErrorsを置き換えます

私はいくつかのログを調べていて、getError()とgetErrors()がJoomla 3.3で非推奨のメッセージをスローしていることに気づきました(更新したばかりです)。どうやらこれらはJoomla 2.5で非推奨になりましたが、更新するための解決策を見つけるのに苦労しています。

私はJoomlaコアファイルを調べましたが、それらもgetError()とgetErrors()を使用しています。これらの代替品はありますか、それとも現在代替案がないJViewLegacyなどのようなものですか?

私がそれを使用している例は、ユーザーを保存するためのものです:

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

代わりにPHP Exceptionsを使用する必要があります。JErrorを使用しているときにJoomlaが非推奨のメッセージをスローするのは奇妙ですが、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内で、ログに記録したり、単に表示したりするなど、それを使用して実行する処理を選択できます。

3
Lodder