Zaczynam od rozwoju php i Joomla, a znalezienie Joomli sprawia, że praca z nią jest dość prosta. Przeszedłem przez przykład Joomla MVC i Lyndę (i do tej pory zbudowaliśmy kilka prostych widoków).Joomla: wywołanie funkcji pomocnika z poziomu modelu?
Mam plik/klasę/funkcję pomocnika, która wyprowadza wszystkie identyfikatory, które istnieją w "ukończonej" tabeli, dzięki czemu mogę wyświetlić łącze dla nowego rekordu na podstawie tego użytkownika lub edytować rekord istniejącego użytkownika.
Z powodzeniem użyłem już innej funkcji w tym pliku pomocniczym w innej części komponentu (Joomla: Write and call a helper function in a component).
Kiedy robię to samo w modelu, otrzymuję to: "Błąd krytyczny: wywołanie metody chronionej JModel :: _ createFileName() z kontekstu" JView "w C: \ wamp \ www \ ilplocal \ library \ joomla \ application \ component \ view.php on line 773 ". Kiedy próbuję go w widoku, działa dobrze - ale potrzebuję wyjścia w modelu.
Kod:
lookups.php
abstract class LookupHelper {
public function other_functions($vars){
...
}
public function completions_exist() {
$db =& JFactory::getDBO();
$query = $db->getQuery(true);
$query->SELECT(' #__completed.completed_userid as UserID');
$query->FROM (' #__completed');
$query->GROUPBY (' #__completed.completed_userid ');
$db->setQuery($query);
$result = $db->loadResultArray(0);
return $result;
}
}
W modelu
$completions_exist = Jview::loadHelper('lookups');
$completions_exist = LookupHelper::completions_exist();
Linia ta jest rzucanie błąd: $completions_exist = Jview::loadHelper('lookups');
Znalazłem kilka naprawdę niejasne odniesienia do czegoś o nazwie JLoader :: register, aby pobrać funkcje pomocnicze bu Nie można znaleźć żadnej dobrej dokumentacji na ten temat w Joomli, chyba że wszyscy mówią, żeby po prostu z tego skorzystać. Więc próbowałem go używać tak:
JLoader::register('LookupHelper', dirname(JPATH_COMPONENT_ADMINISTRATOR).DS.'helpers'.DS.'lookups.php');
$completions_exist = LookupHelper::completions_exist();
który generuje ten błąd: „Fatal error: Class 'LookupHelper' nie został odnaleziony w katalogu C: \ wamp \ ścieżka \ do \ modelu \ nie \ do \ lookups.php. Próbowałem manipulować JLoader :: register (wszystko tutaj) i nie ma wpływu na ścieżkę komunikatu o błędzie
Myśli? Dlaczego działa w widoku, a nie w modelu? Jak korzystać z funkcji pomocnika w ramach modelu?
Dzięki!
##### EDITDzięki @cppl wygląda na to, że jest to problem z drugim bitem kodu. Czytałem również, że .DS. notacja zostaną wycofane w przyszłych wersjach - więc kod, który działa jest:
JLoader::register('LookupHelper', JPATH_COMPONENT_ADMINISTRATOR.'/helpers/lookups.php');
$completions_exist = LookupHelper::completions_exist();
1) Sprawdź. 2) To było częściowe wywracanie z mojej strony - tak, działało 3) Ahhhhhh - nie wiedziałem, że to było wywołanie PHP, powtórzyłem ścieżkę i dostosowałem ją do momentu, kiedy było dobrze. Niesamowite! 4) ahh, rozumiem! Wszelkie pomysły, dlaczego 'Jview :: loadHelper ('lookups');' rzucił błąd? Myślałem, że tak to robisz, teraz nie jestem pewien, kiedy go użyć. Dziękuję bardzo! – Gisto
Cieszę się, że mogę Ci pomóc. Błąd prawdopodobnie dlatego, że ścieżka zaczyna się od "." co jest równoznaczne z bieżącym katalogiem. – Craig