Mam instalację Joomla 1.6, która działa na dwóch bazach danych: bazie danych joomla i bazie danych specyficznej dla domeny, obie na tym samym serwerze MySQL. Niektóre podmioty w specyficznej dla domeny bazie danych zachowują swoje linki własności, tj. przechowują identyfikator użytkownika Joomla, który je utworzył. Niektóre linki są niespójne i wskazują na nieistniejącego użytkownika Joomla, jest to normalne z punktu widzenia modelu domeny. Problem polega na tym, że próbuję uzyskać nazwę użytkownika, która się wyświetla

JUser::_load:Unable to load user with id 1

Ponieważ takie linki są w porządku, muszę pominąć te wiadomości. Dokładny kod, który pobiera nazwę użytkownika, jest następujący:

$user_id = $ticket->getUserId();
$user =& JFactory::getUser($user_id);

Zawijanie tego kodu w ob_start() ... ob_end_clean() nie pomaga. Oczywiście mógłbym to zrobić, hakując wnętrze Joomla, ale czy jest jakieś czystsze rozwiązanie? Jestem nowy w Joomla, więc może jest jakaś opcja w panelu administratora, aby ukryć te wiadomości?

AKTUALIZACJA: Ustawienie display_errors=>off, html_errors=>off, display_startup_errors=>off nie pomaga. Używanie tłumienia błędów PHP z @ jako $user =@ JFactory::getUser($user_id) też nie pomaga.

3
J0HN 8 sierpień 2011, 07:58
Jeśli wyświetla się komunikat „Nie można załadować użytkownika o identyfikatorze 1”, czy na pewno taki użytkownik istnieje?
 – 
WooDzu
8 sierpień 2011, 10:32
Jestem absolutnie pewien, że ten użytkownik nie istnieje. Ale to są prawidłowe dane, więc muszę pominąć tę wiadomość
 – 
J0HN
8 sierpień 2011, 17:41

2 odpowiedzi

Najlepsza odpowiedź

Dlaczego po prostu nie sprawdzisz wstępnie, czy użytkownik istnieje, a następnie uruchomisz swój kod:

$table   = JUser::getTable();
$user_id = intval( $ticket->getUserId() );

if($table->load( $user_id ))
{
         $user =& JFactory::getUser($user_id);
         // now you are sure user exists
} else {
         // user doesn't exists
}
9
WooDzu 8 sierpień 2011, 18:20

Możesz wyłączyć wyświetlanie komunikatu o błędzie w konfiguracji:

  • Na serwerze kart ustaw Raportowanie błędów na brak.
  • (Może także:) W systemie kart ustaw System debugowania na Nie.
0
giraff 8 sierpień 2011, 14:10
System debugowania jest ustawiony na Nie. Sprawdzę raportowanie błędów później, ale o ile pamiętam, też jest ustawiony na żaden.
 – 
J0HN
8 sierpień 2011, 17:40
Raportowanie błędów zostało ustawione na maksimum, ale ustawienie go na brak nie pomaga.
 – 
J0HN
9 sierpień 2011, 08:50