Oco que per Internet hi ha tutorials per a versions anteriors a la 2.0, per exemple la classe Controller no existeix, és CI_Controller.
Vegem un exemple d'instal·lació en local, la idea es tenir-lo disponible a la URL
http://localhost/codeigniter/
Per instal·lar:
NOTA: Obtenir la URL de la última versió a: http://ellislab.com/codeigniter/user-guide/installation/downloads.html
$ sudo mkdir /var/www/codeigniter $ cd /var/www/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 $ sudo joe application/config/config.php
I canvieu la línia:
$config['base_url'] = ;
per:
$config['base_url'] = 'http://localhost/codeigniter';
IMPORTANT: Per fer més robust i poder accedir amb múltiples IPs (per exemple una pública i una privada) podeu posar:
$config['base_url'] = 'http://'.$_SERVER['SERVER_NAME'].'/application';
també serveix:
config['base_url'] = '/application';
Ara podeu accedir a la URL
http://localhost/codeigniter/
Ja està instal·lat. Com podeu veure i us indica la primera pàgina s'utilitza el paradigma de disseny MVC. A la pàgina de welcome tenim la Vista al fitxer:
application/views/welcome_message.php
On podeu veure només hi ha html no codi PHP. El controlador és:
application/controllers/welcome.php
El més important abans de fer modificacions en la forma que funciona Code igniter és entendre com funciona. Bàsicament code igniter és una framework que es base en controlar el flux de l'aplicació passant sempre pel mateix fitxer. En el cas de code igniter aquest fitxer és:
index.php
Tal i com es pot veure a la imatge del manual de Code igniter:
Si us baixeu la última versió de codeigniter obtindreu un fitxer zip on trobareu 3 carpetes:
NOTA: A la carpeta application hi ha un controlador i una vista per defecte (welcome). Aquests fitxers segurament els descartareu per a la vostra aplicació
Cal tenir en compte que també hi ha fitxers ocults, sobretot .htacces per garantir la seguretat d'una instal·lació per defecte.
Recursos:
Requeriments:
Instal·leu LAMP:
$ sudo apt-get install tasksel $ sudo tasksel install lamp-server
Hi ha diverses formes de fer-ho. Us indiquem en aquest apartat una opció possible basada en instal·lar code igniter a /usr/share/codeigniter. Bàsicament seguim els mateixos passos que la instal·lació "normal" per a la URL
http://localhost/codeigniter/
Obtenim el codi de l'última versió a:
http://ellislab.com/codeigniter/user-guide/installation/downloads.html
Per línia de comandes pot ser quelcom similar a:
$ sudo mkdir -p /usr/share/codeigniter $ cd /usr/share/codeigniter $ sudo wget https://github.com/bcit-ci/CodeIgniter/archive/2.1.4.zip $ sudo apt-get install unzip $ sudo unzip CodeIgniter_2.1.4.zip $ sudo rm CodeIgniter_2.1.4.zip
NOTA: El següent pas només és necessari per a fer funcionar l'aplicació per defecte que porta com exemple code igniter: el welcome. Us podeu saltar els següents passos si no voleu aquesta aplicació per a res. Passeu al següent subapartat per veure com configurar més aplicacions que no siguin la welcome amb una sola instància o instal·lació de code igniter
Ara editem la configuració de l'aplicació per defecte
$ sudo joe /usr/share/codeigniter/application/config/config.php
I canvieu la línia:
$config['base_url'] = ;
per:
$config['base_url'] = 'http://localhost/codeigniter';
Ara configureu Apache amb:
$ sudo joe /etc/apache2/conf.d/codeigniter.conf
I poseu
Alias /codeigniter /usr/share/codeigniter
Apliqueu els canvia a Apache:
$ sudo /etc/init.d/apache2 reload
Ara podeu accedir a la URL
http://localhost/codeigniter/
Ja està instal·lat. Com podeu veure i us indica la primera pàgina s'utilitza el paradigma de disseny MVC. A la pàgina de welcome tenim la Vista al fitxer:
application/views/welcome_message.php
On podeu veure només hi ha html no codi PHP. El controlador és:
application/controllers/welcome.php
NOTA: Primer heu d'instal·lar code igniter seguint els passos de l'apartat anterior
Hi ha dos opcions, o instal·leu una aplicació ja existent o en creeu una des de zero. En el segon cas lo típic és utilitzar la carpeta application de code igniter com a plantilla. Anem a suposar volem crear l'aplicació helloworldcodeigniter ho podeu fer per exemple amb:
$ 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
Si utilitzeu git també és interessant copiar el fitxer:
$ sudo cp -r /usr/share/codeigniter/.gitignore /var/www/codeigniterhelloworld
El contingut del qual és:
.DS_Store application/cache/* !application/cache/index.html !application/cache/.htaccess application/logs/* !application/logs/index.html !application/logs/.htaccesss
o:
*/config/development */logs/log-*.php */logs/!index.html */cache/* */cache/!index.html */cache/!.htaccess
Ara cal modificar el fitxer index:
$ sudo joe /var/www/codeigniterhelloworld/index.php
I canviar el path de la carpeta system de:
$system_path = 'system';
a:
$system_path = '/usr/share/codeigniter/system';
Ja podeu accedir a la URL:
http://localhost/codeigniterhelloworld
Ara tocar crear els vostre propi codi.
NOTA: Com podeu veure el fiter .gitignore s'ignoren les carpetes logs i cache
També podeu veure un exemple de com instal·lar una aplicació ja existent d'aquesta forma a ebre-inventory a l'apartat
Aplicació d'inventari. Instal·lació
L'objectiu és instal·lar una aplicació senzilla utilitzant HMVC a:
http://localhost/codeigniter_hmvc
A la carpeta:
/usr/share/codeigniter_hmvc
Previament cal tenir instal·lat codeigniter a /usr/share/codeigniter seguint les passes de:
Code_Igniter#M.C3.BAltiples_aplicacions_i_una_sola_instal.C2.B7laci.C3.B3_de_code_igniter
Ara creeu la carpeta:
$ sudo mkdir /usr/share/codeigniter_hmvc $ cd /usr/share/codeigniter_hmvc
Copiem lo bàsic de Code Igniter:
$ sudo cp -r /usr/share/codeigniter/application . $ sudo cp -r /usr/share/codeigniter/index.php .
Editem el fitxer index.php i ens assegurem que té la següent configuració:
$system_path = '/usr/share/codeigniter/system';
Ara configurem apache:
$ sudo joe /etc/apache2/conf.d/codeigniter_hmvc
Afegiu:
Alias /codeigniter_hmvc /usr/share/codeigniter_hmvc
I ara aplique els canvis a Apache:
$ sudo /etc/init.d/apache2 reload
TODO http://ellislab.com/codeigniter/user-guide/installation/index.html
If you wish to increase security by hiding the location of your CodeIgniter files you can rename the system and application folders to something more private. If you do rename them, you must open your main index.php file and set the $system_folder and $application_folder variables at the top of the file with the new name you've chosen.
For the best security, both the system and any application folders should be placed above web root so that they are not directly accessible via a browser. By default, .htaccess files are included in each folder to help prevent direct access, but it is best to remove them from public access entirely in case the web server configuration changes or doesn't abide by the .htaccess.
After moving them, open your main index.php file and set the $system_folder and $application_folder variables, preferably with a full path, e.g. '/www/MyUser/system'.
One additional measure to take in production environments is to disable PHP error reporting and any other development-only functionality. In CodeIgniter, this can be done by setting the ENVIRONMENT constant, which is more fully described on the security page.
That's it!
Recursos:
NOTA: NO he trobat pas traduccions així que les he fet jo mateix. Les podeu trobar a:
https://github.com/acacha/CodeIgniter-catalan
Podeu obtenir el zip a:
https://github.com/acacha/CodeIgniter-catalan/archive/master.zip
Un cop tingueu el zip heu de copiar la carpeta catalan a dins la carpeta languages que hi ha dins la carpeta system de codeigniter (en el nostre cas /usr/share/codeigniter/system)
Pas a pas amb comandes:
$ cd /usr/share/codeigniter/system/language $ sudo wget -O catalan.zip https://github.com/acacha/CodeIgniter-catalan/archive/master.zip $ sudo unzip catalan.zip $ sudo rm -rf catalan.zip $ sudo mv CodeIgniter-catalan-master/catalan catalan $ sudo rm -rf CodeIgniter-catalan-master
A partir d'un URL base com:
http://localhost/codeigniter
Tot passa pel fitxer:
/var/www/codeigniter/index.php
NOTA: El path absolut pot canviar en el vostre cas
Com podeu veure hi ha una carpeta per als fitxers controladors (que contenen codi PHP):
application/controllers
Fitxers per defecte:
index.html welcome.php
i un altre on van les vistes:
application/views
Fitxers per defecte:
index.html welcome_message.php
Les pàgines s'accedeixen passant pel fitxer index, per exemple vegem un típic hello World, al qual i volem accedir per la URL:
http://localhost/codeigniter/index.php/hello/world
Cal crear el controlador, creant un fitxer hello com la primera part de la URL després de index.php, més la extensió PHP:
$ cd /var/www/codeigniter $ sudo joe application/controllers/hello.php
<?php class Hello extends CI_Controller { function world() { $this->load->view('world_view'); } } ?>
i world és el nom de la funció per que la següent part de la URL és world precisament. Ara cal crear el fitxer world_view
$ sudo joe application/views/world_view.php
Si no creeu la vista us dirà:
An Error Was Encountered Unable to load the requested file: world_view.php
Podriem també accedir a un fitxer index per defecte, és a dir la URL:
http://localhost/codeigniter/index.php/hello
o
http://localhost/codeigniter/index.php/hello/
creant una funció index:
function index() { $this->load->view('world_view'); }
En aquest cas mostrem la mateixa vista, però podem mostrar un altre, només cal crear-la.
Vegem com funciona la pàgina d'exemple:
$ cat application/controllers/welcome.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class Welcome extends CI_Controller { /** * Index Page for this controller. * * Maps to the following URL * http://example.com/index.php/welcome * - or - * http://example.com/index.php/welcome/index * - or - * Since this controller is set as the default controller in * config/routes.php, it's displayed at http://example.com/ * * So any other public methods not prefixed with an underscore will * map to /index.php/welcome/<method_name> * @see http://codeigniter.com/user_guide/general/urls.html */ public function index() { $this->load->view('welcome_message'); } }
El mapeig és senzill, es parteix d'una URL base, en el nostre cas:
http://localhost/codeigniter
I el mapeig és:
http://{URLBASE}/[controller-class]/[controller-method]/[arguments]
La següent foto ho mostra molt bé:
http://farm3.static.flickr.com/2091/2202884331_13621873de.jpg?v=0
La configuració de la base de dades es fa al fitxer:
$ cat application/config/database.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /* | ------------------------------------------------------------------- | DATABASE CONNECTIVITY SETTINGS | ------------------------------------------------------------------- | This file will contain the settings needed to access your database. | | For complete instructions please consult the 'Database Connection' | page of the User Guide. | | ------------------------------------------------------------------- | EXPLANATION OF VARIABLES | ------------------------------------------------------------------- | | ['hostname'] The hostname of your database server. | ['username'] The username used to connect to the database | ['password'] The password used to connect to the database | ['database'] The name of the database you want to connect to | ['dbdriver'] The database type. ie: mysql. Currently supported: mysql, mysqli, postgre, odbc, mssql, sqlite, oci8 | ['dbprefix'] You can add an optional prefix, which will be added | to the table name when using the Active Record class | ['pconnect'] TRUE/FALSE - Whether to use a persistent connection | ['db_debug'] TRUE/FALSE - Whether database errors should be displayed. | ['cache_on'] TRUE/FALSE - Enables/disables query caching | ['cachedir'] The path to the folder where cache files should be stored | ['char_set'] The character set used in communicating with the database | ['dbcollat'] The character collation used in communicating with the database | NOTE: For MySQL and MySQLi databases, this setting is only used | as a backup if your server is running PHP < 5.2.3 or MySQL < 5.0.7 | (and in table creation queries made with DB Forge). | There is an incompatibility in PHP with mysql_real_escape_string() which | can make your site vulnerable to SQL injection if you are using a | multi-byte character set and are running versions lower than these. | Sites using Latin-1 or UTF-8 database character set and collation are unaffected. | ['swap_pre'] A default table prefix that should be swapped with the dbprefix | ['autoinit'] Whether or not to automatically initialize the database. | ['stricton'] TRUE/FALSE - forces 'Strict Mode' connections | - good for ensuring strict SQL while developing | | The $active_group variable lets you choose which connection group to | make active. By default there is only one group (the 'default' group). | | The $active_record variables lets you determine whether or not to load | the active record class */ $active_group = 'default'; $active_record = TRUE; $db['default']['hostname'] = 'localhost'; $db['default']['username'] = ''; $db['default']['password'] = ''; $db['default']['database'] = ''; $db['default']['dbdriver'] = 'mysql'; $db['default']['dbprefix'] = ''; $db['default']['pconnect'] = TRUE; $db['default']['db_debug'] = TRUE; $db['default']['cache_on'] = FALSE; $db['default']['cachedir'] = ''; $db['default']['char_set'] = 'utf8'; $db['default']['dbcollat'] = 'utf8_general_ci'; $db['default']['swap_pre'] = ''; $db['default']['autoinit'] = TRUE; $db['default']['stricton'] = FALSE; /* End of file database.php */
Un cop feta la configuració la base de dades es carrega al constructor del controlador:
class Main extends CI_Controller { function __construct() { parent::__construct(); $this->load->database(); } ...
CodeIgniter a diferencia d'altres frameworks no suporta ORM/Object Relation Mapper de forma nativa. Es pot utilitzar Datamapper.
http://datamapper.wanwizard.eu/
També existeix IgnitedRecord.
http://ellislab.com/codeigniter/user-guide/libraries/sessions.html
Informació que es guarda per a només la següent petició
Per passar dades utilitzant flashdata:
$this->session->set_flashdata('item', 'value');
També es pot passar un array de la mateixa forma que es fa amb la funció set_userdata():
$newdata = array( 'username' => 'johndoe', 'email' => '[email protected]', 'logged_in' => TRUE ); $this->session->set_flashdata($newdata);
Per llegir les dades:
$this->session->flashdata('item');
Es pot mantenir les dades per a un petició adicional (request adicional) amb:
$this->session->keep_flashdata('item');
Vegeu Jquery Ajax
Recursos:
Vegeu HMVC
Sparks is a package management system for Codeigniter that will allow you install high-quality libraries into your applications instantly.
Vegeu Security_Token#Code_Igniter
Recursos:
Vegeu random_string per crear per exemple API Keys
Code igniter suporta els següents protocols:
Mail, Sendmail, i SMTP
On:
IMPORTANT: El mètode sendmail no implica necessàriament tenir que utilitzar el servidor de correu electrònic sendmail. Per exemple es pot utilitzar Postfix. Vegeu l'article de desambiguació sendmail on s'explica que sendmail pot ser tant una comanda com un programari servidor de correu electrònic
El protocol s'indica com un preferència al configurar l'enviament d'emails:
$config['protocol'] = 'sendmail'; $config['mailpath'] = '/usr/sbin/sendmail'; $config['charset'] = 'iso-8859-1'; $config['wordwrap'] = TRUE; $this->email->initialize($config);
Per depurar es pot utilitzar:
echo $this->email->print_debugger();
Si dona l'error:
Unable to send email using PHP mail(). Your server might not be configured to send mail using this method.
Recursos:
Per carregar el Helper:
$this->load->helper('email');
Funcions:
Exemple de comprovar si un email és correcte:
$this->load->helper('email'); if (valid_email('[email protected]')) { echo 'email is valid'; } else { echo 'email is not valid'; }
Send Email:
send_email('recipient', 'subject', 'message')
Per algo més elaborat la classe Email:
http://ellislab.com/codeigniter/user-guide/libraries/email.html
Recursos:
Al fitxer index.php es defineix el nivell d'error de PHP (vegeu PHP i errors):
... define('ENVIRONMENT', 'development'); ... if (defined('ENVIRONMENT')) { switch (ENVIRONMENT) { case 'development': error_reporting(E_ALL); break; case 'testing': case 'production': error_reporting(0); break; default: exit('The application environment is not set correctly.'); } }
Com podeu veure la variable ENVIRONMENT determinar el nivell d'error i per defecte està activat developmen (es mostren tots els errors).
log_threshold a config.php
Al fitxer application/config/config.php es pot establir el nivell a partir del qual es mostren els missatges al fitxers de log
$config['log_threshold'] = 0;
IMPORTANT: A explotació excepte que s'estigui depurant es recomana no activar més enllà que els errors
Recursos:
:*https://github.com/EllisLab/CodeIgniter/wiki/Dynamic-Base-Url :*https://github.com/EllisLab/CodeIgniter/wiki/Automatic-base-url == Vegeu també == :*[[PHP Frameworks]] :*[[PHP]] :*[[Javascript]] == Enllaços externs == :*http://ellislab.com/codeigniter == Codi font Github == https://github.com/EllisLab/CodeIgniter/