Codeigniter

logo van Wijhe Consultancy

19-08-2017
Eigen artikelen

afbeelding Codeigniter

Codeigniter - het instellen van de basis

 

Uitganspunten.

 

Instellingen

Elk web applicatie kent zijn instellingen.

En elke web applicatie heeft daar zijn eigen eigenaardigheden in.

Codeigniter is daar niet anders in.

 

Waarom instellen?

Eerst het waarom van het instellen.

Op zich werkt Codeigniter out of the box.

Wel heeft Codeigniter de mogelijkheid om bepaalde zaken beschikbaar te maken of niet.

Codeigniter zal moeten weten hoe je hem wilt gaan gebruiken.

Dus welke functionaliteit wil je op welk moment inzetten.

 

Wat verstaan we eigenlijk onder functionaliteit?.

Codeigniter werkt toch?

 

Op zich klopt dit.

Codeigniter biedt echter nog veel meer.

Er zijn diverse libraries / helpers welke je het leven wel erg gemakkelijk kunt maken.

Libraries zijn erop gerich een complete taak te vergemakkelijken. Vb Email of Upload

Helpers zijn erop gericht binnen een complete taak een deelopdracht voor hun rekening te nemen.

 

Een voorbeeld van een librarie om snel een tabel te maken

  table class  
$this->load->library('table');

$data['gegevens'] = array(
             array('Naam', 'Kleur', 'Grootte'),
             array('Jan', 'Blauw', 'Small'),
             array('Piet', 'Rood', 'Large'),
             array('Klaas', 'Groen', 'Medium')
             );

$this->load->view('tabel1', $data); 

Levert een keurige tabel op

 

 
    De tabel  
Naam Kleur Grootte
Jan Blauw Small
Piet Rood Large
Klaas Groen Medium
 

Standaard heeft Codeigniter voldoende functionaliteit om out of the box te werken.

Maar niet alle functionaliteit wordt direct aangeboden.

 

De mogelijkheid wordt zo geboden om lichtgewicht applicaties te kunnen bouwen en om de gebruiker de mogelijkheid te geven zelf te kiezen voor functionaliteiten.

Sterker nog om op elk moment te kunnen kiezen voor het al dan niet inzetten van functionaliteiten.

 

Waarom niet meteen alles inzetten?

Waarom zou je dat doen?

 

Je krijgt dan een applicatie met:

 

  • veel geheugen gebruik
  • veel bronnen gebruik
  • verminderde performance
  • grote footprint

 

Dat lijkt mij niet wenselijk.

 

Een aantal functionaliteiten wil je standaard maar andere pas als je ze nodig bent.

 

Om een voorbeeld te geven, database functionaliteit wil je veelal zowieso.

Dus applicatie breed.

Maar functionaliteit om een formulier te verzenden, heb je pas nodig als je een formulier wilt gaan verzenden

 

Betekent dus dat je zowel op

  • applicatie niveau als op
  • script / functie niveau

zou moeten kunnen kiezen.

Dat kan gelukkig binnen Codeigniter vrij simpel

 

Applicatie niveau

config.php

 

Het instellen van Codeigniter op applicatie niveau gebeurt via een aantal configuratie scripts in de map config

De volgende aanpassing zorgt ervoor dat Codeigniter altijd weet waar het begin van de web applicatie is.

De applicatie kan zo altijd een absoluut pad in de scripts gebruiken.

Javascripts en CSS files zijn zo altijd bereikbaar.

 
    pad naar de file config.php  
./application/config/config.php
 

 

Verander het volgende

  van  
 $config['base_url'] = "http://example.com/";

  naar  
 $config['base_url']    = "http://localhost/ci/";

 

Helpers

De volgende aanpassing laadt een aantal Helpers.

Hiermee helpt Codeigniter je met een aantal taken in een aantal categoriën.

Bijvoorbeeld er zijn Form helpers welke je helpen bij het maken van formulier elementen.

 

Het zijn allemaal functies welke aangeroepen worden.

 

Je kunt ervoor kiezen wanneer je ze wilt aanroepen.

Bij het starten van de applicatie of per functie van een class apart.

 

Het voordeel van het eerste is dat de Helper altijd beschikbaar is.

Het nadeel van de eerste is dat de totala overhead toeneemt.

 

Het voordeel van de tweede is dat de totale overhead zo klein mogelijk gehouden wordt en pas toeneemt als er om gevraagd wordt.

Het nadeel van de tweede is dat je er steede weer aan denken moet en dat de scripts groter worden.

 

Bovenstaande afwegingen zul je zelf per applicatie dienen te maken.

 

Pas de volgende file aan

 
    pad naar de file autoload.php  
./application/config/autoload.php
  van  
 // $autoload['helper'] = array();

  naar  
  $autoload['helper'] = array('url', 'file');

 

De test

 

We gaan nu in

 
./application/view/welcome_message.php

 

de css file includen.

 

Verwijder de style sheet uit de file en bewaar deze als:

 
C:/htdocs/ci/css/cms.css
  cms.css  
body {
 background-color: #fff;
 margin: 40px;
 font-family: Lucida Grande, Verdana, Sans-serif;
 font-size: 14px;
 color: #4F5155;
}

a {
 color: #003399;
 background-color: transparent;
 font-weight: normal;
}

h1 {
 color: #444;
 background-color: transparent;
 border-bottom: 1px solid #D0D0D0;
 font-size: 16px;
 font-weight: bold;
 margin: 24px 0 2px 0;
 padding: 5px 0 6px 0;
}

code {
 font-family: Monaco, Verdana, Sans-serif;
 font-size: 12px;
 background-color: #f9f9f9;
 border: 1px solid #D0D0D0;
 color: #002166;
 display: block;
 margin: 14px 0 14px 0;
 padding: 12px 10px 12px 10px;
}

 

Voeg vervolgens het volgende toe aan de head sectie:

  voegtoe
 

Uiteraard gaat het om

 
  <?php echo base_url() ; ?> 


Hiermee zet je het pad naar

 
http://localhost/ci/

Inderdaad dezelfde als

  naar  
 $config['base_url']    = "http://localhost/ci/";


Open nu weer je browser en ga naar

 
http://localhost/ci/

Als het goed is, zie je geen verschil.

Het verschil zit onder de motorkap.

De CSS file zit nu in een aparte CSS file en is geintergreerd in de applicatie.


Routes


Codeigniter maakt gebruik van een standaard controller als er geen URL wordt opgegeven.

Deze controller staat vermeld in:

./application/application/config/routes.php
 

In ons geval is de standaard route

 
welcome.php

Aanpassing aan welcome.php


Nu een aanpassing aan de controller zelf


Open nu

 
./application/controllers/welcome.php

en pas het volgende aan

  van  
 function index()
 {
   $this->load->view('welcome_message', $data);
 }

  naar  
 function index()
 {
   $data['css'] = 'cms' ;

   $this->load->view('welcome_message', $data);
 }


Sla deze pagina nu op als

 
./application/controllers/begin.php

Wat is er nu gebeurd?


Aan de functie index ( Altijd de begin functie) is de variabele


 
cms

toegevoegd aan de variabele


 
$data['cms']

Op deze manier geeft Codeigniter variabelen door aan de views.


Pas nu

 
./application/view/welcome_message.php

hierop aan.

  van  
 
  naar  
 

Zo kun je dus variabelen doorgeven en ook per functie van een controller een aparte CSS file gebruiken.


Begin controller


Stel je wilt een andere controller gebruiken als de standaard welcome.php controller.

Stel je wilt de controller welkom gebruiken als de standaard controller.


Hoe doe je dat?


Allereerst zul je deze controller dienen te maken

Als voorbeeld dient uiteraard welcome.php

 
./application/controller/welcome.php

Deze is met een paar kleine aanpassingen te gebruiken.

  van  
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends ci_Controller {


    public function index()
    {
        $this->load->view('welcome_message');
    }
    
}

/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */ 
  naar  
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welkom extends ci_Controller {

    public function index()
    {
        $data['css'] = 'cms' ;        
        
        $this->load->view('welkom', $data);
    }
    
}

/* End of file welkom.php */
/* Location: ./application/controllers/welkom.php */ 

De aanpassingen zitten in in een aantal zaken.

  • de naam van de controller -> welkom.php
  • De naam van de class ->   Welkom   ipv   Welcome
  • Het hoofdletter gebruik bij de naam   Welkom   toekenning
    ( De eerste letter dient een hoofdletter te zijn )
  • Het toewijzen van de waarde   cms   aan de variabele   $data['css']
  • Het aanroepen van de view   welkom
  • Het toewijzen van de   $data   aan de view

Rest nu nog de view   welkom.php

  welkom.php  
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
 
    echo '<html>'."\n" ;
    echo '<head>'."\n" ;
 
    echo 'Welkom bij Codeigniter'."\n" ;
    echo ''."\n" ;
 
    echo ''."\n" ;
 
    echo ''."\n" ;
    echo ''."\n" ;
 
    echo '

Welkom bij Codeigniter! - door van Wijhe Consultancy

'."\n" ;
 
    echo '

Als je deze pagina wilt aanpassen, ga dan naar:

'."\n" ;
    echo 'system/application/views/welkom.php'."\n" ;
 
    echo '

De bijbehorende controller kun je vinden op:

'."\n" ;
    echo 'system/application/controllers/welkom.php'."\n" ;   
 
    echo '</body>'."\n" ;
    echo '</html>' ;


Bewaar deze file als welkom.php

Het pad hierna is:

 
./application/view/welkom.php

Aanpassen routes.php


Om de standaard route aan te passen dienen we de config file routes.php

Het pad hierna is:

 
./application/config/routes.php

 

Verander de file

  van  
$route['default_controller'] = "welcome";
  naar  
$route['default_controller'] = "welkom";

 

Aanpassen van een tweetal hulp mappen

 

Er zijn binnen Codeigniter een tweetal mappen welke schrijfrechten nodig hebben.
Dat zijn de mappen :

 

./application/cache

 

En de map:

 

./application/logs

 

Geef deze mappen (geen bestanden) de schrijfrechten 777
De eerste map kan dan ook gebruikt worden voor het cache mechanisme van Codeigniter
De tweede map wordt door Codeigniter gebruikt om de log files in te bewaren.



Tot slot

 

Codeigniter is nu ingesteld.

 

Stoei ermee en koppel diverse controllers aan diverse views.

 

Het volgende artikel zal over de database koppeling gaan.



Veel programmeer plezier ermee.

 

Tot ziens,

 

Ubel Jan van Wijhe

 

van Wijhe Consultancy

E-mail naar info@vanwijhecons.nl