PDA

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)

alex51
12-06-2010, 13:39
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...

Biko
15-06-2010, 13:48
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

k@m!l
16-06-2010, 11:48
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

ekumi
30-07-2010, 13:47
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".

ekumi
30-07-2010, 14:10
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 :)

ekumi
30-07-2010, 14:52
Dzięki. Tak właśnie zrobiłem i mi również pomogło.