U bent hier

Instellen van de basis

logo

CodeIgniter - het instellen van de basis

 

Elk programma kent zijn instellingen.

En elk programma 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 classes / helpers welke je het leven wel erg gemakkelijk kunt maken.

Classes 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 (class) om snel een tabel te maken

 
    Een voorbeeld van de table class  
<?php

$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?

Dat kan.

Alleen krijg je zo wel een applicatie met:

  • Veel geheugen gebruik
  • Veel bronnen gebruik
  • Verminderde performance
  • Grote footprint

 

 

 

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  
./system/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 bepaalde categorie.

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  
./system/application/config/autoload.php
 
    van  
// $autoload['helper'] = array();
 
    naar  
$autoload['helper'] = array('url', 'file');

 

 

De test

 

We gaan nu in

 
./system/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
 
    opslaan als 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  
<link rel="stylesheet" type="text/css" href="<?php echo base_url() ; ?>css/cms.css"  media="screen,projection" />

 

Uiteraard gaat het om

 
<?php echo base_url() ; ?>

 

Hiermee zet je het pad naar

 
http://localhost/CI/

 

Inderdaad dezelfde als

 
$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:

./system/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

 
./system/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

 
./system/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

 
./system/application/view/welcome_message.php

 

hierop aan.

 
    van  
<link rel="stylesheet" type="text/css" href="<?php echo base_url() ; ?>css/cms.css"  media="screen,projection" />
 
    naar  
<link rel="stylesheet" type="text/css" href="<?php echo base_url() ; ?>css/<?php echo $css ?>.css"  media="screen,projection" />

 

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

 
./system/application/controller/welcome.php

 

Deze is met een paar kleine aanpassingen te gebruiken.

 
    van  
<?php

class Welcome extends Controller {

    function 
Welcome()
    {
        
parent::Controller();    
    }
    
    function 
index()
    {
        
$this->load->view('welcome_message');
    }
}

/* End of file welcome.php */
/* Location: ./system/application/controllers/welcome.php */
 
    naar  
<?php

class Welkom extends Controller {

    function 
Welkom()
    {
        
parent::Controller();    
    }
    
    function 
index()
    {
        
$data['css'] = 'cms' ;        
        
        
$this->load->view('welkom');
    }
}

/* End of file welkom.php */
/* Location: ./system/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
  • De naam van de hoofd function -> welkom ipv welcome
  • Het hoofdletter gebruik bij de naam toekenning
    ( De eerste letter dient een hoofdletter te zijn )
  • Het aanroepen van de view welkom.php
  • Het toewijzen van de variabele   cms   aan   $data['css']

Rest nu nog de view   welkom.php

 
    welkom.php  
<html>
<head>
<title>Welkom bij CodeIgniter</title>

<link rel="stylesheet" type="text/css" href="<?php echo base_url() ; ?>css/<?php echo $css ?>.css"  media="screen,projection" />

</head>
<body>

<h1>Welkom bij CodeIgniter! - door van Wijhe Consultancy</h1>

<p>Als je deze pagina wilt aanpassen, ga dan naar:</p>
<code>system/application/views/welkom.php</code>

<p>De bijbehorende controller kun je vinden op:</p>
<code>system/application/controllers/welkom.php</code>

<p><br />Pagina rendering in {elapsed_time} seconden</p>

</body>
</html>

 

Bewaar deze file als welkom.php

Het pad hierna is:

 
./system/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:

 
./system/application/config/routes.php

 

Verander de file

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

 

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