Thay thế getError và getErrors không dùng nữa


8

Tôi đã xem qua một số nhật ký và nhận thấy rằng getError () và getErrors () đang ném các thông điệp không dùng nữa trong Joomla 3.3 (chúng tôi vừa cập nhật). Rõ ràng những thứ này không được dùng nữa trong Joomla 2.5, nhưng tôi đang gặp khó khăn trong việc tìm giải pháp để cập nhật.

Tôi đã xem qua các tập tin lõi Joomla và thậm chí chúng vẫn đang sử dụng getError () và getErrors (). Có sự thay thế nào cho những thứ này không, hay nó giống như JViewLegacy, v.v., nơi không có sự thay thế nào vào lúc này?

Một ví dụ trong đó tôi đang sử dụng nó là để cứu người dùng:

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

Câu trả lời:


3

Bạn nên sử dụng ngoại lệ PHP thay thế. Tôi thấy thật kỳ lạ khi Joomla ném các thông điệp không dùng nữa khi sử dụng JErrornhưng vẫn không được sử dụng trong lõi 3.3.6.

Dù sao, dưới đây sẽ là một ví dụ về Ngoại lệ cho truy vấn cơ sở dữ liệu

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

Điều này sẽ đưa ra một lỗi cho biết bảng không tồn tại vì tôi đã sử dụng #__userthay vì #__users.

Trong trường hợp của bạn, tôi sẽ thử như sau:

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

$e->getMessage() tất nhiên là có lỗi, vì vậy bên trong bẫy, bạn có thể chọn những gì bạn muốn làm với nó, chẳng hạn như đăng nhập nó hoặc chỉ đơn giản là hiển thị nó.


$ E-> getMessage () sẽ trả về các thông báo lỗi tương tự như cuộc gọi getError () (cũng được bản địa hóa)?
DemonGyro

Tôi đã tìm thấy thời gian để thực hiện những thay đổi mà bạn đề xuất và nó không hoạt động. save () không đưa ra các lỗi mà tôi mong đợi là ngoại lệ, vì vậy mã bắt không bao giờ được chạy.
DemonGyro
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.