|
Ook dit deel is weer een ruwe vertaling van dit hier. In het eerste en tweede deel konden we de eerste opzet zien van het MVC componenten model. We hadden daar 1 view die data kreeg van het model. (zoals gemaakt in deel II) In dit deel gaan we werken met het model, en in plaats van het hardcoded gebruiken van de begroeting, word dit uit een tabel in de database gehaald. We gebruiken hiervoor de JDatabase class om met de database te werken. Ons huidige model heeft maar één methode: getGreeting(). Deze methode is erg simpel. Al wat het doet is het teruggeven van de hardcoded begroeting. Om het wat intressanter te maken, zullen we de begroeting uit de database halen. Ook zullen we een SQL bestand maken die de tabel aanmaakt waarin de begroeting staat. En zullen we de naam van dit bestand opnemen in het XML installatie bestand (ook wel manifest genoemd). Op die manier zal de tabel aangemaakt worden bij de installatie.
Voor nu zullen we wat code maken die in de plaats komt van ons return statement, en de begroeting uit de database haalt. De eerste stap die we maken is een referentie naar het database object. Omdat er al een connectie bestaat voor de normale Joomla zaken, hoeven we die niet voor ons component te maken. Een referentie naar de connectie van de bestaande database kunnen we als volgt doen: $db =& JFactory::getDBO(); JFactory is een statische class die gebruikt word om referentie krijgen naar veel van de systeem objecten. De naam van de methode staat voor Get Database Object. Dit is belangrijk en makkelijk te onthouden. Nu we de referentie hebben naar het Database Object, kunnen we onze data op gaan halen. We doen dat in twee stappen: - Onze query in het database object opslaan.
- Het resultaat van de query laden.
Onze nieuwe getGreeting() functie zal er dan als volgt uitzien.
function getGreeting() { $db =& JFactory::getDBO();
$query = 'SELECT greeting FROM #__hello'; $db->setQuery( $query ); $greeting = $db->loadResult();
return $greeting; } Hello is de naam van de tabbel die we gaan maken, en greeting is de naam van de kolom waar we de groeten in gaan opslaan. Als je niet bekend met SQL ga dan effe hierheen.
De $db->loadResult() methode zal de opgeslagen database query draaien, en het eerste veld van het resultaat laten zien. Er zijn nog meer load methoden. Kijk daarvoor in de API Reference. Nu moeten we nog een SQL bestand maken die de tabel maakt die we hierboven gebruiken. Deze zal bij de installatie van het component aangemaakt worden. De eerste regel zal de tabel weggooien als deze bestaat. Daarna zal de tabel aangemaakt worden, en vervolgens word er data inopgeslagen. Kijk voor de querie hier. De prefix voor de tabelnaam 2 underscores __NaamTabel zullen door Joomla vervangen worden met de prefix die de database heeft. De meeste Joomla Databases zullen jos als prefix hebben. Op die manier zouden 2 joomla installaties gebruik kunnen maken van dezelfde database. Door er een andere prefix aan te geven is dit mogeijk. De eerste kolom in de tabel is ID. En is ook een primary key. Dit geeft aan dat elk record een uniek nummer krijgt om zo onderscheid te kunnen maken tussen de gegevens in de tabel. Deze velden worden vaak gebruikt om gegevens op te zoeken in een database. Het andere veld is Greetings, ofwel onze begroetingen. Deze zullen we duste zien krijgen in ons component. We zullen ons SQL bestand opslaan onder de naam: install.utf.sql Zoals we het kunnen installeren, kunnen we het ook deinstalleren. Hopelijk dat ons compont (vol met niet te missen functionaliteit) nooit gedeinstalleerd word, maarals dat eens gebeurd dan moet ook netjes alles opgeruimd worden. Joomla kan prima zelf de bestanden opruimen maar voor de database moeten we een bestand maken die onze tabel(len) weggooit. Dat zou er dan zo uit moeten zien en opgeslagen worden onder de naam: uninstall.utf.sql DROP TABLE IF EXISTS `#__hello`; We zullen nu nog het XML bestand aanpassen. We moeten onze twee SQL bestanden toevoegen. Bij het installeren: <install> <sql> <file charset="utf8" driver="mysql">install.sql</file> </sql> </install> En bij het deinstalleren (let op in admin gedeelte!!):
<administration> <!-- Administration Menu Section --> <menu>Hello World!</menu> <!-- Administration Main File Copy Section --> <files folder="admin">
<filename>hello.php</filename> <filename>index.html</filename> <filename>install.sql</filename> <filename>uninstall.sql</filename>
</files>
</administration>
In het gedeelte met de file tags (install en uninstall) staan er nog 2 secties: De charset en de driver. De Charset is het type charset welke gebruikt dient te worden. De enige geldige is utf8. Als je voor oudere versie van MySql install bestanden wil maken dan moet je dit weglaten. De driver geeft aan voor welke database de SQL is geschreven. Op dit moment kan dit alleen MySql zijn. Maar wie weet in de toekomst. Conclusie. We hebben nu een component dat zowel gebruik maakt van het Joomla Framework en de JDatabase classes. Je bent nu in staat om MVC componenten te maken die interactie heeft met de database en die de Joomla Installer gebruikt om database tabellen te maken en te vullen.
|