私はいくつかのログを調べていて、getError()とgetErrors()がJoomla 3.3で非推奨のメッセージをスローしていることに気づきました(更新したばかりです)。どうやらこれらはJoomla 2.5で非推奨になりましたが、更新するための解決策を見つけるのに苦労しています。
私はJoomlaコアファイルを調べましたが、それらもgetError()とgetErrors()を使用しています。これらの代替品はありますか、それとも現在代替案がないJViewLegacyなどのようなものですか?
私がそれを使用している例は、ユーザーを保存するためのものです:
if (!$user->save()) {
$error = $user->getError();
...
}
代わりに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内で、ログに記録したり、単に表示したりするなど、それを使用して実行する処理を選択できます。