IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Instal·lació

Abans de començar a treballar amb codi igniter hem de tenir instal·lat el servidor LAMP dins del nostre ordinador. O podem fer de dos maneres amb la comanda

$sudo apt-get install lamp-server^

O també si tenim instal·lat el tasksel amb

$sudo tasksel

Obtenim el code igniter amb la línia de comandes.

$ sudo mkdir -p /usr/share/codeigniter
$ cd /usr/share/codeigniter
$ sudo wget http://c303150.r50.cf1.rackcdn.com/CodeIgniter_2.1.4.zip
$ sudo unzip CodeIgniter_2.1.4.zip 
$ sudo rm CodeIgniter_2.1.4.zip 

Editem la configuració de l'aplicació per defecte

$ sudo nano /usr/share/codeigniter/application/config/config.php

Modificarem la línia

$config['base_url']     = ;

i la canviarem per

$config['base_url']     = 'http://localhost/codeigniter';

Modificarem la configuració del Apache

$ sudo nano /etc/apache2/conf.d/codeigniter 

I li afegirem un alias a l'aplicació

Alias /codeigniter /usr/share/codeigniter

I reiniciarem l'Apache per aplicar els canvis

$ sudo /etc/init.d/apache2 reload

Ara ja podem accedir a la pàgina

http://localhost/codeigniter/

Exemple de configuració codiigniter amb helloworld

Creem una carpeta al nostre servidor web, i utilitzarem el code igniter com a plantilla

$ sudo mkdir /var/www/codeigniterhelloworld
$ sudo cp -r /usr/share/codeigniter/application /var/www/codeigniterhelloworld
$ sudo cp -r /usr/share/codeigniter/index.php /var/www/codeigniterhelloworld

És interessant copia el fitxer

$ sudo cp -r /usr/share/codeigniter/.gitignore /var/www/codeigniterhelloworld

Modifiquem el fitxer

$ sudo nano /var/www/codeigniterhelloworld/index.php

i canviem la ruta de la carpeta system

$system_path = 'system'; 

per

$system_path = '/usr/share/codeigniter/system';  

I ja podem accedir a la següent direcció.

http://localhost/codeigniterhelloworld

Introducció

Jordiromeroigniter01.png

  1. El index.php serveix com el controlador frontal, inicialitza els recursos bàsics necessaris per executar CodeIgniter.
  2. El router examina la petició HTTP per determinar què s'ha de fer amb ella.
  3. Si hi ha un arxiu de memòria cau, s'envia directament al navegador, evitant l'execució normal del sistema.
  4. Seguretat. Abans que es carregui el controlador de l'aplicació, la petició HTTP i les dades presentades usuari es filtra per a la seguretat.
  5. El controlador càrrega el model, les biblioteques centrals, ajudants i altres recursos necessaris per tramitar la sol·licitud.
  6. La vista es representa a continuació, envia al navegador web per ser vist. Si la memòria cau està habilitada, la vista s'emmagatzema en memòria cau perquè en les peticions subsegüents es pot fer servir.

URL

URL

Les URLs és CodeIgniter es dissenyen per a ser amigables amb els motors de recerca i les persones. En lloc d'utilitzar l'enfocament estàndard de les "query string" per les URLs que es sinònim de sistemes dinàmics, Codeigniter utilitza enfocament basat és segments:

ejemplo.com/noticias/articulo/mi_articulo

MVC

CodeIgniter està basat en el patró de desarrollament Model-Vista-Controlador. MVC és un enfocament de software que separa la lògica de la aplicació de la presentació. En la pràctica, li permiteix a les seves pàgines web contenir mínim codi ja que la presentació esta separada del codi PHP.

Vistes

És la informació que es presenta al usuari. Una vista serà normalment una pàgina web, però en CodeIgniter, una vista també pot ser un fragment de pàgina com l'encapçalament o peu de pàgina.

<html>
<head>
<title>My Blog</title>
</head>
<body>
<h1>Bienvenido a mi Blog!</h1>
</body>
</html>

Mai es crida directament a les vistes, les tenen que carregar un controlador.

Les dades se passen del controlador a la vista per mitjà d'un array o un objecte en el segon paràmetre en la funció de carrega de la vista. Aquest es un exemple utilitzant un array:

$data = array(
 'title' => 'Mi Titulo',
 'heading' => 'Mi Encabezado',
 'message' => 'Mi Mensaje'
 );
 $this->load->view('blogview', $data);

Model

Què és un Model?

Els models són classes de PHP que es dissenyen para treballar amb informació en la seva base de dades. És possible que tingui una classe de model que conté les funcions d'inserir, actualitzar i recuperar les dades del bloc.Heus aquí un exemple del que una classe d'aquests models podria

class Blogmodel extends CI_Model {

    var $title   = '';
    var $content = '';
    var $date    = '';

    function __construct()
    {
        // Call the Model constructor
        parent::__construct();
    }
    
    function get_last_ten_entries()
    {
        $query = $this->db->get('entries', 10);
        return $query->result();
    }

    function insert_entry()
    {
        $this->title   = $_POST['title']; // please read the below note
        $this->content = $_POST['content'];
        $this->date    = time();

        $this->db->insert('entries', $this);
    }

    function update_entry()
    {
        $this->title   = $_POST['title'];
        $this->content = $_POST['content'];
        $this->date    = time();

        $this->db->update('entries', $this, array('id' => $_POST['id']));
    }

}

Anatomia del model

Les Classes model s'emmagatzemen al vostre directori application/models. Poden anar dins subcarpetes si voleu que aquest tipus d'organització.

class Model_name extends CI_Model {

    function __construct()
    {
        parent::__construct();
    }
}

Els noms de classe han de tenir la primera lletra en majúscula i la resta del nom en minúscules. Assegureu-vos que la seva classe estén la classe model base.

El nom del fitxer serà una versió en minúscules del nom de la classe. Per exemple, si la classe és la següent:

class User_model extends CI_Model {

    function __construct()
    {
        parent::__construct();
    }
}

El seu arxiu serà la següent:

application/models/user_model.php

Carregar el model

Els models solen ser carregats i anomenats des dels seus controladors funcions. Per carregar un model que va a utilitzar la següent funció:

 $ This-> load-> model (' nombre_modelo ');

Si el model es troba en una subcarpeta, inclogui la ruta relativa de la carpeta de models.

 $ This-> load-> model (' blog/consultes ');

Un cop carregat, s'accedeix a les funcions del seu model utilitzant un objecte amb el mateix nom que la seva classe:

 $ This-> load-> model (' nombre_modelo '); 
 this-> $ nombre_modelo -> function (); 

Si voleu que el seu model li assigna a un nom d'objecte diferent pot especificar mitjançant el segon paràmetre de la funció de càrrega:

 $this->load->model('Model_name', 'fubar');
 $this->fubar->function();

Aquí és un exemple d'un controlador, que carrega un model, a continuació, serveix vista:

class Blog_controller extends CI_Controller {

    function blog()
    {
        $this->load->model('Blog');

        $data['query'] = $this->Blog->get_last_ten_entries();

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

Auto-Carrega del model

Connexió a la Base de dades

Pot passar manualment la configuració de connectivitat de base de dades a través del tercer paràmetre:

$config['hostname'] = "localhost";
$config['username'] = "myusername";
$config['password'] = "mypassword";
$config['database'] = "mydatabase";
$config['dbdriver'] = "mysql";
$config['dbprefix'] = "";
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;

$this->load->model('Model_name', '', $config);

Generar Resultats de consulta

$query = $this->db->query("SU CONSULTA");
if ($query->num_rows() > 0)
{
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}
}

Resolució de problemes

Active Record

Selecció de dades

Inserció de dades

Funció per a inserció de dades.

Genera una cadena insert de SQL basada amb les dades que subministra, i executa la consulta. Tant pot passar un array com un objecte a la funció. Aquí hi ha un exemple utilitzant un array:

$data = array(
'titulo' => 'Mi titulo' ,
'nombre' => 'Mi nombre' ,
'$fecha' => 'Mi $fecha'
);
$this->db->insert('mi_tabla', $data);

Produeix: INSERT INTO mi_tabla (titulo, nombre, $fecha) VALUES ('Mi titulo', 'Mi nombre', 'Mi $fecha')

El primer paràmetre contindrà el nom de la taula i el segon un array associatiu de valors.

Un exemple utilitzant un objecte

class MiClase {
var $titulo = 'Mi Titulo';
var $contenido = 'Mi Contenido';
var $$fecha = 'Mi $fecha';
}
$object = new MiClase;
$this->db->insert('mi_tabla', $object);

Actualització de dades

Genera una cadena update de SQL i executa la consulta basada en les dades previstes. A la funció pot pasar-li un array o un objecte. Aquí un exemple utilitzant un array:

$data = array(
'titulo' => $titulo,
'nombre' => $nombre,
'fecha' => $fecha
);
$this->db->where('id', $id);
$this->db->update('mi_tabla', $data);

Produeix:

UPDATE mi_tabla SET title = '{$titulo}', name = '{$nombre}', date = '{$fecha}' WHERE id = $id

Actualitzarem les dades de la nostra aplicació. Seguint el format anterior utilitzant un array.

function __construct(){
	parent::__construct();

$this->load->database();

} 

public function update()
 {
 $data = array(
'ID'=> 15007,
'Name'=> 'Parla',
'CountryCode'=> 'ESP'
);
$this->db->where('ID', 15006);
$this->db->update('City', $data);
echo 'Files modificades ' . $this->db->affected_rows();
 }

També fem que ens mostri les files afectades afegint-li el paràmetre

$this->db->affected_rows();

Esborrar Dades

Genera una cadena delete de SQL i executa la consulta.

$this->db->delete('mi_tabla', array('id' => $id));

Produeix

DELETE FROM mi_tabla WHERE id = $id

Esborra un valor de la base de dades

function __construct(){
	parent::__construct();

$this->load->database();

} 

public function delete()
 {
 $data = array(
'ID'=> 15007,
'Name'=> 'Parla',
'CountryCode'=> 'ESP'
);
$this->db->where('ID', 15007);
$this->db->delete('City');
echo 'Files esborrades ' . $this->db->affected_rows();
 }

Enllaços Externs

http://ellislab.com/codeigniter

Manual Codi Igniter


Vegeu També

codeigniter