terug naar Techniek CodeIgniter 3
Inleiding Codeigniter 3
Wat is Codeigniter?
Het korste antwoord is: een "application framework".
Oftewel een raamwerk waarbinnen je een website kunt bouwen.
Een langer antwoord is:
Codeigniter is een framework.
Een framework is een software omgeving waar binnen je je applicatie bouwt,
en voor een basisstructuur zorgt en je vele standaard programmeer handelingen op een gestructureerde wijze aan reikt.
Binnen het framework bouw je dus je applicatie
Is een framework al een kant en klaar CMS?
Nee, het levert alleen de bouw stenen waarmee je op een snellere, geordende wijze de website bouwt.
Hierdoor worden diverse veel voorkomende taken binnen een website sterk vereenvoudigt.
Wat binnen dit framework een sterk punt is, is de mogelijkheid om
- lay-out (hoe ziet het er uit)
- logica (wat dient de website te gaan doen)
- database verkeer (de interactie met alle ingevoerde gegevens)
gescheiden te houden.
In programmeer termen:
- Model (database verkeer)
- View (lay-out)
- Controller (logica)
MVC is de afkorting hiervoor.
Hoewel de afkorting net zo goed CMV had kunnen heten.
In deze volgorde gebruik je veelal dit soort frameworks
Je hebt eerst de controller.
Deze zit als een spin in het centrum van het web en stuurt de rest aan. ( Controller )
Om vervolgens de database te bevragen. ( Model )
Waarna alle informatie wordt doorgegeven aan een of meerder lay-out scripts ( View )
De voordelen van een dergelijke aanpak zijn:
- scheiding van logica, vormgeving en database verkeer
- een aanpassing in een van drie onderdelen hoeft de andere twee niet te hinderen
- uitgebreide mogelijheden om vaker voorkomende functies te standaariseren
Aanvullende informatie over frameworks: Wikipedia
Het pakket installeren
Laten we gaan beginnen
Op volgende adres kun je het pakket downloaden:
https://codeigniter.com/download
Pak het pakket uit en kopieer de inhoud in de root van je webserver
Uitpakken in
/var/www/html/codeigniter3.1.x
Start nu je web browser en ga naar:
http://localhost/codeigniter3.1.x
In je browser zie je dan:
Out of the box en er gebeurt iets.
Heerlijk, maar goed dit is nog geen website.
Wat zie je nu?
Laten we eerst eens uitleggen, wat we hier nu eigenlijk zien.
Binnen Codeigniter wordt er altijd een controller aangeroepen.
Deze roept vervolgens een functie op, welke wordt uitgevoerd.
http://localhost/codeigniter3.1.x/index.php/controllers/functie
De vraag rijst hier, waar zie je wat?
Laten we de default waarden van Codeigniter eens bekijken
Basis URL website | controller | functie | |
http://localhost/codeigniter3.1.x/ | index.php/ | controller/ | functie |
http://localhost/codeigniter3.1.x/ | index.php/ | welcome/ | index |
Omdat we met default waarden werken, is ons geval nu
http://localhost/codeigniter3.1.x/ | index.php/ | welcome/ | index |
hetzelfde als
http://localhost/codeigniter3.1.x/
Een eerste voorbeeld van de URL
Je ziet een URL met de volgende opbouw
http://localhost/codeigniter3.1.x/nieuwsbrief
Wat zegt deze URL nu?
In onderstaande schema is de URL uit elkaar gehaald en in de Codeigniter opbouw geplaatst.
website | controller | functie | parameters | |
http://localhost/codeigniter3.1.x/ | index.php/ | controller/ | functie | parameters |
http://localhost/codeigniter3.1.x/ | index.php/ | nieuwsbrief |
De functie en de parameters zijn niet ingevuld.
Daardoor weet je dat de functie index moet zijn
Als er immers niets is ingevuld, is de functie index.
Moet je altijd een index functie in je controller te hebben?
Nee, alleen als deze nodig is.
Een tweede voorbeeld van de URL
Je ziet een URL met de volgende opbouw
http://localhost/codeigniter3.1.x/nieuwsbrief/inschrijven
website | controller | functie | parameters | |
http://localhost/codeigniter3.1.x/ | index.php/ | controller/ | functie | parameters |
http://localhost/codeigniter3.1.x/ | index.php/ | nieuwsbrief/ | inschrijven |
De controller en de functie zijn ingevuld.
Daardoor weet je dat de controller nieuwsbrief heet en de functie inschrijven moet zijn
En je weet dat er geen parameters vereist zijn.
Is de index.php
nodig?
Nee, niet perse.
Maar dat is voer voor een ander verhaal.
Dus veelal: Nee.
Het volgende artikel geeft hier verdere informatie over
https://vanwijheweb.nl/codeigniter/codeigniter_2/htaccess_voor_codeigniter
De controller
Laten we beginnen met de controller.
Ga maar eens naar:
http://localhost/codeigniter3.1.x/index.php/welcome
Met als resultaat in de browser
Je ziet geen verschil tussen.
http://localhost/codeigniter3.1.x/
en
http://localhost/codeigniter3.1.x/index.php/welcome
Dat klopt ook.
In ons geval is
http://localhost/codeigniter3.1.x/
hetzelfde als
http://localhost/codeigniter3.1.x/index.php/welcome
Foutmelding
De volgende code zou zeker een foutmelding opleveren
http://localhost/codeigniter3.1.x/begin
Als je met je eigen controllers en functies gaat werken, (99,9% kans)
dien je index.php
vooralsnog wel te schrijven.
(Over hoe je de index.php achterwege laat, wordt nog een artikel over gepubliceerd.)
De controller welcome.php
Als er niets wordt ingegeven, weet Codeigniter dat er een standaard controller wordt aangeroepen.
Zoals in bovenstaande afbeelding te lezen valt, is de standaard controller op dit moment: welcome.php
Deze is te vinden op:
./application/controllers/Welcome.php
Of in een directory structuur gezien
pad naar welcome.php |
Het aanpassen van de standaard controller komt later nog aan bod
De opbouw van een controller
De opbouw van de standaard controller is als volgt:
class Welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}
Allereerst wordt de hoofd class ininitaliseerd en verbonden met de standaard controller van Codeigniter.
class Welcome extends CI_Controller {
}
Let op dat de naam Welcome
begint met een hoofdletter.
Dan wordt de function index()
gedefinieerd.
public function index()
{
$this->load->view('welcome_message');
}
Wat deze doet is de View welcome_message.php
aanroepen.
De opbouw van deze aanroep is typerend voor de OOP stijl welke Codeigniter hanteert
De view welcome_message
is gelegen in het volgende pad
./application/views/welcome_message.php
Codeigniter weet waar de views zich bevinden, dus alleen een aanroep voldoet.
Bij het aanroepen van een view is het niet nodig php als extensie te gebruiken.
Het mag wel!
We gaan nu eens kijken naar de standaard view
De view
De view welcome_message.php
in een directory structuur gezien
Structuur
Enige uitleg is nu wel op zijn plaats.
Bij het ontwikkelen van een applicatie binnen Codeigniter, wil Codeigniter je helpen.
Dit vraagt wel om de structuur van Codeigniter te volgen.
Dat wil zeggen:
- plaats de controllers in de controllers map
./application/controllers/
- plaats de models in de models map
./application/models/
- plaats de views in de views map
./application/views/
Een eerste aanpassing
Een kleine aanpassing in welcome_message.php
Ik ga deze vertalen in het Nederlands.
Van
<h1>Welcome to CodeIgniter!</h1>
<p>The page you are looking at is being generated dynamically by CodeIgniter.</p>
<p>If you would like to edit this page you'll find it located at:</p>
<code>application/views/welcome_message.php</code>
<p>The corresponding controller for this page is found at:</p>
<code>application/controllers/Welcome.php</code> >
Naar
<h1>Welkom bij Codeigniter!</h1>
<p>Deze pagina is dynamisch gemaakt door CodeIgniter.</p>
<p>Als je deze wilt aanpassen, kun je het bestand vinden op:</p>
<code>application/views/welcome_message.php</code>
<p>De bijbehorende controller voor deze pagina kun je vinden op:</p>
<code>application/controllers/Welcome.php</code>
En in de browser:
Dat werkt dus
Bewaar de view welcome_message.php
als welkom.php
in dezelfde map.
Deze gaan we nu later nog gebruiken.
Nu de aanpassing aan de controller welcome.php
Welcome.php naar welkom.php
Laten we eerst de controller hernoemen naar welkom.php
Van:
./application/controllers/Welcome.php
naar:
./application/controllers/Welkom.php
Er dient wel een aanpassing aan welkom.php
te geschieden:
Binnen Codeigniter dien je bij een controller de Class naam een naam te geven waarbij de naam met een hoofdletter begint.
Dus van: Welcome.php
class Welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}
Naar: Welkom.php
class Welkom extends CI_Controller {
public function index()
{
$this->load->view('welkom');
}
}
In de browser ga je naar:
http://localhost/codeigniter3.1.x/index.php/welkom
Je ziet dan:
Dat werkt dus.
Als je al een fout maakt, vb. welkom2
ipv welkom
ingeeft, zie je:
We gaan een eigen "Hallo wereld" script maken
De controller hallo_wereld.php
maken we het eerst.
./application/controllers/Hallo_wereld.php
class Hallo_wereld extends CI_Controller
{
public function index()
{
$this->load->view('hallo_wereld');
}
}
De nieuwe view hallo_wereld.php
De view hallo_wereld.php
maken we nu.
./application/views/hallo_wereld.php
Met als inhoud:
<html>
<head>
<title>Hallo Wereld</title>
</head>
<body>
<h1>Hallo Wereld!</h1>
<p>Het eerste eigen geschreven Codeigniter script.</p>
</body>
</html>
En in de browser
http://localhost/codeigniter3.1.x/index.php/hallo_wereld
De eerste eigen functie
We gaan de controller hallo_wereld.php
uitbreiden met een eigen geschreven functie.
Genaamd wereld
/application/controllers/Hallo_wereld.php
class Hallo_wereld extends CI_Controller
{
// index
public function index()
{
$this->load->view('hallo_wereld');
}
// wereld
function wereld()
{
$this->load->view('wereld');
}
}
Wat de functie wereld()
betreft, deze laat de view wereld.php
zien.
De view wereld.php
We gaan de view wereld.php
schrijven
./application/views/wereld.php
Met als inhoud:
<html>
<head>
<title>Wereld</title>
</head>
<body>
<h1>Wereld!</h1>
<p>Het tweede eigen geschreven Codeigniter script.</p>
</body>
</html>
En in de browser
En waar gaat dit alles heen?
Uiteindelijk is er een adressen web applicatie gebouwd waarin alle acties welke bij een database horen, aan de orde komen.
- het weergeven van alle records (in onds geval adressen)
- het toevoegen van een adres
- het wijzigen van een adres
- het verwijderen van een adres
- het zoeken van een adres
Deze applicatie is te vinden op https://vanwijheweb.nl/download
Tot zover
Tot zover de inleiding tot Codeigniter
Het volgende artikel van Codeigniter zal gaan over het instellen van Codeigniter,
en het contact maken met de database MySQL.
Veel programmeer plezier ermee.
Tot ziens,
Ubel Jan van Wijhe
vanWijhe.Web