PDA

Zobacz pełną wersję : Dodatkowe pole w tabeli użytkowników



Barn
29-11-2008, 13:24
Witam,

Mam taki problem: chciałbym dodać do ekranu Zmień szczegóły swojego konta jeszcze jedną zmienną. Dodałem do tabeli jos_users kolumne mud_stat, gdzie bedzie przechowywana wartosc typu tinyint (liczby 0-2). Znalazlem plik w ktorym trzeba umiescic kod ktory bedzie wyswietlal wartosc tej zmiennej (components/com_user/views/user/tmpl/form.php), ale kiedy wpisuje tam:


<tr>
<td>
<label for="mud_stat">
<?php echo "Status"; ?>:
</label>
</td>
<td>
<span><?php echo $this->user->get('mud_stat');?> </span>
</td>
</tr>


To wyświetla się "Status:" a po nim żadna liczba (chociaz w tabeli jest wartość '2') , tak jakby obiekt user w ogole nie mial zmiennej mud_stat. Czy musze ją gdzieś zapisac? Nie wystarczy dodać kolumne o tej nazwie do tabeli jos_users?

zwiastun
29-11-2008, 13:35
Skrypt, w którym dokonałeś wpisu, odpowiada jedynie za prezentację danych (to jest szablon widoku, na co wskazuje macierzysty katalog skryptu). Obsługę zmiennej trzeba zapisać wcześniej bodaj w skrypcie kontrolera, ale...

takie przeróbki kodu nie są zbyt rozsądne - każda aktualizacja Joomla! powoduje, że trzeba uważać, by sobie nie nadpisać zmodyfikowanego skryptu oraz wymaga zwykle ponownego poprawiania kodu w nowej wersji.

Zastanów się, czy rzeczywiście jest Ci ten kłopot do czegoś potrzebny, a jeśli tak, czy nie lepiej obsłużyć go napisaniem dodatku (plugins)

dobeck
20-12-2008, 20:11
No rzeczywiscie aktualizacje mogą być problemem ale jeżeli trzeba już coś takiego zrobić w ten właśnie sposób to roboty nie ma zbyt wiele.

W pliku administrator/components/com_user/views/user/tmpl/form.php dopisujemy dodatkowe pole


<tr>
<td class="key">
<label for="mud_stats">
<?php echo JText::_( 'Status' ); ?>
</label>
</td>
<td>
<input class="inputbox" type="text" name="mud_stats" id="mud_stats" size="40" value="<?php echo $this->user->get('mud_stats'); ?>" />
</td>
</tr>
<tr>



a w plikach:
libraries/joomla/database/table/user.php
libraries/joomla/user/user.php



var $mud_stats = null;

zwiastun
20-12-2008, 21:07
Pokombinowałeś? Dobrze by było jeszcze nabyć co nieco kompetencji zanim obwieści się swoje rozwiązania. Skoro cokolwiek wiesz zo programowaniu, to zapewne zdołałeś doczytać, że w Joomla 1.5 zastosowano konsekwentnie model MCV. A skoro tak, to coś z tego wynika.
Lekturkę znajdziesz np. na www.docs.joomla.org. Nie mówiąc już o tym, ze na forum pisałem na ten temat razy kilka, w tym w FAQ

dobeck
20-12-2008, 22:56
Nie kombinowałem :)
Zrobiłem zgodnie ze wzorcem korzystajac m.in. z docs.joomla.org i http://api.joomla.org

zwiastun
20-12-2008, 23:13
No to dodatkowe info mówi o tym, że pliki szablonów (te z katalogów /tmpl umieszczamy w katalogu /templates/twoj_szablon/html/nazwa_komponentu-modulu

template overrides - przesłanianie szablonów. Nie każcie mi tego 100 razy powtarzać!