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/
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
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
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.
É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);
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'])); } }
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
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); } }
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);
$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; } }
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);
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();
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(); }
http://ellislab.com/codeigniter