Zobacz pełną wersję : tworzenie własnego komponentu - biała strona
no_solution
12-06-2010, 11:31
witam,
uczę się tworzyć komponenty pod joomlę i korzystam z tego kursu: http://www.wromanek.info/artykuly/16-kurs-pisania-komponentow-dla-joomla-15-mvc.html
Doszedłem już do 5 części i napotkałem na błąd, którego nie potrafię znaleźć. Stworzyłem nowy model. Chciałem za jego pomocą pobrać dane z bazy danych, ale gdy to robię pojawia mi się biała strona (czyli mniemam, że gdzieś mam błąd).
Model ten wywołuję tak:
index.php?option=com_witaj&view=kaban
W załączniku jest mój kod. Chciałbym prosić o wskazówkę co przeoczyłem. (w załączniku jest archiwum, ale to nie jest instalator komponentu, tylko zwykłe archiwum)
Sugerowałbym zapytać o to Wojtka, sądzę, że jako autorowi tego kursu będzie mu prościej zlokalizować Twój problem.
no_solution
13-06-2010, 21:20
niestety Pan Wojtek nie może mi pomóc z powodu braku czasu... kombinowałem z tym sam i powiem co znalazłem :)
stworzyłem nowy widok, nazwałem go kaban. Kod view.html.php wygląda tak:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.application.component.view');
class WitajViewKaban extends JView
{
function display($tpl = null)
{
$model =& $this->getModel();
$telefony = $model->pobierzDane();
//$telefony='nic';
$this->assignRef( 'telefony', $telefony );
parent::display($tpl);
}
}
?>czyli nic szczególnego... do modelu dodałem metodę getTelefony:
function getTelefony()
{
$query = "SELECT * FROM #__telefony";
$dane = $this->_getList($query);
return $dane;
}
czyli podobnie jak w kursie. Jednak gdy chcę wywołać mój widok to otrzymuję błąd:
Fatal error: Call to a member function getTelefony() on a non-object in [sciezka_do_joomli]/components/com_witaj/views/kaban/view.html.php on line 11
Linia 11 to jest właśnie ta linia, w której wywołuje utworzoną przed chwilą metodę
$telefony = $model->getTelefony();
może mi ktoś podpowie co robię źle? Trzy razy szedłem od początku tego kursu i za każdym razem mam ten sam błąd...
Jesteś pewny, że nie masz błędu w tmpl/default.php ?
no_solution
15-06-2010, 19:03
tak, kod wygląda tak:
<?php
defined ('_JEXEC') or die('Restricted access');
?>
<h3><?php echo $this->mojedane; ?></h3>
więc o błędzie raczej nie ma mowy, przynajmniej tutaj
Zmieniłeś nazwę modelu, na taką jak masz nazwany widok ?
Dla pewności w view.html.php w linii
$model =& $this->getModel();
Przekaż do getModel nazwę modelu który chcesz pobrać. Bo jak widać po błędzie, model nie jest ładowany.
malkowitch
16-06-2010, 12:22
Jeśli chcesz pobierać dane z modelu który ma inną nazwę niż widok a będzie to częste to rób tak:
$model =& JModel::getInstance('NAZWAMODELU','NAZWAKOMPONENTU Model');
no_solution
16-06-2010, 15:40
ok, działa :) wielkie dzięki za pomoc. Zmieniłem linijkę 11 na
$model =& JModel::getInstance('Witaj','WitajModel');
i działa aż miło
Natrafiłem na problem z zapisem do bazy podczas nauki pisania komponentu wg wymianionego kursu (cz. 6). Po wypełnieniu formularza i wysłaniu go pojawia sie biała strona. Do bazy nie zapisuje się nic. Nie pojawia się też komunikat o prawidłowości zapisu ani okno z błędem. Dodam, że podobnie zachowuje się komponent wtedy, gdy na serwerze w katalogu components umieszczę pliki ściągnięte z plikowni kursu. Czy ktoś zna przyczynę problemu?
malkowitch
30-07-2010, 13:49
Najpierw włącz do budowania komponentu maksymalne pokazywanie błędów w konfiguracji, następnie tryb "Analizy Systemu".
Dzięki. Juz samo włączenie wyświetlania błędów i analiza tego, co sie pokazało pomogła.
no_solution
30-07-2010, 14:28
od twórcy kursu dostałem taką odp
Najczęstszy powód takiego stanu rzeczy to wyłączone wyświetlanie błędów na serwerze wtedy gdy wystąpi jakiś błąd pokazuje się biała strona. Włącz sobie wyświetlanie błędów i zobaczysz od razu co jest nie tak.
i mi pomogło :)
Dzięki. Tak właśnie zrobiłem i mi również pomogło.
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!