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


8

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

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

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

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

回答:


3

代わりにPHP例外を使用してください。JError3.3.6コアでまだ使用されていない場合にJoomlaが非推奨のメッセージをスローするのは奇妙です。

とにかく、以下はデータベースクエリの例外の例です。

$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内で、ログに記録したり、単に表示したりするなど、それを使用して実行する処理を選択できます。


$ e-> getMessage()は、getError()呼び出しと同じエラーメッセージを返しますか?
DemonGyro 2014年

あなたが提案した変更を実装する時間を見つけましたが、うまくいきませんでした。save()が例外として予期しているエラーをスローしていないため、catchコードは実行されません。
DemonGyro 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.