Beruflich Dokumente
Kultur Dokumente
6os es&acios do*les siguiendo sentencias se convierten en Tn"spU -ue imitan el do*le es&aciado.
1%em&lo de 7soG
$string = $this->typography->auto_typography($string);
3ar'$etros
9a, un &ar0metro o&cional -ue determina si el anali"ador sint0ctico de*erHa reducir de dos saltos de lHnea
consecutivos a dos. 7sar el *ooleano !RUE o >076E.
Por de@ectoI el anali"ador sint0ctico no reduce los saltos de lHnea. 1n otras &ala*rasI si no se envHan &ar0metros es
lo mismo -ue >acer estoG
$string = $this->typography->auto_typography($string, FALSE);
:ota< 1l @ormateo ti&ogr0@ico &uede ser intensivo en el uso del &rocesadorI &articularmente si >a, muc>o
contenido a @ormatear. 2i elige esta @uncin &uede -uerer considerar cac>ear sus &0ginas.
Gua del Usuario de CodeIgniter Versin 2.1.3 241
#or$atB%=ara%ters+,
1sta @uncin es similar a la autoBt;pograp=;+, anteriorI e<ce&to -ue solamente >ace conversin de caracteresG
6as comillas se convierten correctamente a comillas ti&ogr0@icas en@rentadasI e<ce&to &ara a-uellas -ue
a&arecen dentro de eti-uetas.
6os a&stro@es se convierten a a&stro@es ti&ogr0@icos.
6os guiones do*les Jsea como (( estos o como estos((otrosK se convierten en estos_guiones.
Cres &untos correlativos sea &recediendo o siguiendo a una &ala*rasI se convierten en &untos sus&ensivos
6os es&acios do*les siguiendo sentencias se convierten en Tn"spU -ue imitan el do*le es&aciado.
1%em&lo de 7soG
$string = $this->typography->format_characters($string);
nl2"rBe1%eptBpre+,
Convierte caracteres de nueva lHnea en eti-uetas E"r A a menos -ue a&are"can dentro de eti-uetas EpreA.
1sta @uncin es idntica a la @uncin nl2"r+, nativa de P9PI e<ce&to -ue ignora las eti-uetas EpreA.
1%em&lo de 7soG
$string = $this->typography->nl2br_except_pre($string);
prote%tB"ra%edB4uotes
Al usar la *i*lioteca !;pograp=; %unto con la Clase 3arserI a veces &uede ser desea*le &roteger las comillas
sim&les , do*les con llaves. Para >a*ilitar estoI esta*lecer la &ro&iedad prote%tB"ra%edB4uotes de la clase a
!RUE.
1%em&lo de 7soG
$this->load->library('typography');
$this->typography->protect_braced_quotes = TRUE;
Gua del Usuario de CodeIgniter Versin 2.1.3 242
Clase UnitBtest
6as &rue*as de unidad son un en@o-ue de la ingenierHa del so@t=are en el -ue se escri*en &rue*as &ara cada
@uncin en su a&licacin. 2i no est0 @amiliari"ado con este conce&toI &odrHa >acer una &e-ue+a investigacin
googleando el tema.
6a clase UnitBtest de CodeIgniter es *astante sim&leI consistiendo de una @uncin de evaluacin , dos @unciones
de resultado. 3o es la intencin -ue sea un con%unto de &rue*as com&letamente desarrolladoI sino m0s *ien un
mecanismo sencillo &ara evaluar el cdigo &ara determinar si se est0 &roduciendo el ti&o de datos correcto , el
resultado.
Ini%iali8ar la Clase
Como la ma,orHa de las clases en CodeIgniterI la clase UnitBtest se iniciali"a en su controlador usando la @uncin
?t=is@Aload@Ali"rar;G
$this->load->library('unit_test');
7na ve" cargadaI el o*%eto 7nitBtest estar0 dis&oni*le usandoG ?t=is@Aunit.
Correr 3rue"as
6a e%ecucin de una &rue*a consiste en suministrar una &rue*a , un resultado es&erado a la siguiente @uncinG
?t=is@Aunit@Arun+ prue"aJ resultado esperadoJ Lno$"re de la prue"aLJ LnotasL,
Donde prue"a es el resultado del cdigo -ue desea &ro*arI resultado esperado es el ti&o de dato -ue es&eraI
no$"re de la prue"a es un nom*re o&cional -ue le da a su &rue*a , notas son notas o&cionales. 1%em&loG
$prueba = 1 + 1;
$resultado_esperado = 2;
$nombre_prueba = 'Suma una ms uno';
$this->unit->run($prueba, $resultado_esperado, $nombre_prueba);
1l resultado es&erado -ue suministra &uede ser tanto una coincidencia literal como de ti&o de datos. A-uH >a, un
e%em&lo con un literalG
$this->unit->run('Foo', 'Foo');
A-uH >a, un e%em&lo de coincidencia de ti&o de datoG
$this->unit->run('Foo', 'is_string');
]Advierte el uso de NisBstringN en el segundo &ar0metro^ 6e dice a la @uncin a evaluar si la &rue*a est0
&roduciendo una cadena como resultado. A-uH est0 la lista de ti&os de com&araciones &ermitidasG
Gua del Usuario de CodeIgniter Versin 2.1.3 243
isBo*%ect
isBstring
isB*ool
isBtrue
isB@alse
isBint
isBnumeric
isB@loat
isBdou*le
isBarra,
isBnull
Genera%in de In#or$es
Puede tanto mostrar los resultados des&us de cada &rue*aI como correr varias &rue*as , generar un in@orme al
@inal. Para mostrar un in@orme directamenteI sim&lemente im&rima o devuelva la @uncin run+,G
echo $this->unit->run($test, $expected_result);
Para correr un in@orme com&leto de todas las &rue*asI >aga estoG
echo $this->unit->report();
1l in@orme se @ormatear0 en una ta*la 9C'6. 2i &re@iere los datos en crudo &uede recu&erar un arra, usandoG
echo $this->unit->result();
Hodo Estri%to
Por de@ectoI la clase UnitBtest eval:a las coincidencias literales vagamente. Considere este e%em&loG
$this->unit->run(1, TRUE);
6a &rue*a se eval:a como enteroI &ero el resultado es&erado es *ooleano. P9PI sin em*argoI de*ido a sus ti&os de
dato rela%ados evaluar0 el cdigo anterior como !RUE usando la &rue*a igualdad normalG
if (1 == TRUE) echo 'Esto se evala como TRUE';
2i lo &re@iereI &uede &oner la clase UnitBtest en modo estrictoI lo -ue com&arar0 los ti&os de dato tanto como el
valorG
if (1 === TRUE) echo 'Esto se evala como FALSE';
Para >a*ilitar el modo estrictoI use estoG
$this->unit->use_strict(TRUE);
Gua del Usuario de CodeIgniter Versin 2.1.3 244
.a"ilitarFes=a"ilitar la 3rue"a de Unidad
2i -uisiera de%ar algunas &rue*as en sus scri&tsI &ero no tener -ue correrlas a menos -ue lo necesiteI &uede
des>a*ilitar las &rue*as de unidad usandoG
$this->unit->active(FALSE);
Visuali8a%in de la 3rue"a de Unidad
Al visuali"ar los resultados de la &rue*a de unidadI se muestran los siguientes Htems &or de@ectoG
3om*re de la Prue*a JtestBnameK
Ci&o de Dato de Prue*a JtestBdatat,&eK
Ci&o de Dato 1s&erado JresBdatat,&eK
8esultado JresultK
3om*re de Arc>ivo J@ileK
3:mero de 6Hnea JlineK
Cual-uier nota -ue >a,a ingresado &ara la &rue*a JnotesK
Puede &ersonali"ar lo -ue de esos Htems se muestre usando ?t=is@Aunit@AsetBite$s+,. Por e%em&loI si solo
-uiere el nom*re de la &rue*a , el resultado mostradoG
3ersonali8ar las 3rue"as Hostradas
$this->unit->set_test_items(array('test_name', 'result'));
Crear una 3lantilla
2i -uisiera -ue los resultados de sus &rue*as se @ormatearan de modo di@erenteI entonces &uede esta*lecer su
&ro&ia &lantilla. A-uH >a, un e%em&lo de una &lantilla sencilla. Advierta las seudo(varia*les re-ueridasG
$str = '
<table border="0" cellpadding="4" cellspacing="1">
:ro<s;
<tr>
<td>:item;</td>
<td>:result;</td>
</tr>
:)ro<s;
</table>';
$this->unit->set_template($str);
:ota< 2u &lantilla tiene -ue estar declarada antes de correr el &roceso de la &rue*a de unidad.
Gua del Usuario de CodeIgniter Versin 2.1.3 245
Clase Upload
6a Clase Upload de CodeIgniter &ermite su*ir arc>ivos. 2e &ueden esta*lecer varias &re@erencias restringiendo el
ti&o , tama+o de los arc>ivos.
El 3ro%eso
2u*ir un arc>ivo involucra el siguiente &roceso generalG
2e muestra un @ormulario &ara su*ir arc>ivosI &ermitindole al usuario elegir un arc>ivo &ara su*ir.
Cuando se envHa el @ormularioI el arc>ivo se su*e al destino es&eci@icado.
Adem0sI el arc>ivo se valida &ara asegurarse -ue se le &ermite su*ir en *ase a las &re@erencias
esta*lecidas.
7na ve" su*idoI se le muestra al usuario un mensa%e de <ito.
Para mostrar este &rocesoI a-uH >a, un *reve tutorial. Des&us encontrar0 in@ormacin de re@erencia.
Crear el >or$ulario de 6u"ida
7sando un editor de te<toI crear un @ormulario llamado uploadB#or$.p=p. Dentro su,oI colocar este cdigo ,
guardarlo en su car&eta appli%ationvieCsG
<html>
<head>
<title>Formulario de Subida</title>
</head>
<body>
<?php echo $error;?>
<?php echo form_open_multipart('upload/do_upload');?>
<input type="file" name="userfile" size="20" />
<br /><br />
<input type="submit" value="upload" />
</form>
</body>
</html>
Advertir0 -ue estamos usando un >el&er @orm &ara crear la eti-ueta de a&ertura del @ormulario. 6as su*idas de
arc>ivos necesitan de un @ormulario Nmulti&artNI &or lo tanto el >el&er crea la sinta<is adecuada &ara ello. Cam*in
advertir0 -ue usamos la varia*le ?error. 1sto es &ara -ue &odamos mostrar mensa%es de error en caso -ue el
usuario >aga algo mal.
7a 3'gina de a1ito
7sando un editor de te<toI crear un @ormulario llamado uploadBsu%%ess.p=p. Dentro su,oI colocar este cdigo ,
guardarlo en su car&eta appli%ationvieCsG
Gua del Usuario de CodeIgniter Versin 2.1.3 246
<html>
<head>
<title>Formulario de Subida</title>
</head>
<body>
<h3>El archivo se transfiri correctamente!</h3>
<ul>
<?php foreach ($upload_data as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?php endforeach; ?>
</ul>
<p><?php echo anchor('upload', 'Transferir otro archivo!'); ?></p>
</body>
</html>
El Controlador
7sando un editor de te<toI crear un controlador llamado upload.p=p. Dentro su,oI colocar este cdigo ,
guardarlo en su car&eta appli%ation%ontrollersG
<?php
class Upload extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->helper(array('form', 'url'));
}
function index()
{
$this->load->view('upload_form', array('error' => ' ' ));
}
function do_upload()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
Gua del Usuario de CodeIgniter Versin 2.1.3 247
$this->load->view('upload_success', $data);
}
}
}
?>
7a Carpeta Upload
3ecesitar0 una car&eta destino &ara las im0genes su*idas. Crear una car&eta en la raH" de su instalacin de
CodeIgniter llamada uploads , esta*le"ca sus &ermisos de arc>ivo a 777.
3ru9"eloO
Para &ro*ar su @ormularioI visite su sitio usando una 786 similar a estaG
ejemplo.com/index.php/upload/
De*erHa ver un @ormulario de su*ida. Intente cargar un arc>ivo de imagen J@ormatos %&gI gi@I o &ngK. 2i la ruta en
su controlador es correctaI de*erHa @uncionar.
Gua de Re#eren%ia
Ini%iali8ar la Clase Upload
Como la ma,orHa de las clases en CodeIgniterI la Clase Upload iniciali"a en su controlador usando la @uncin
?t=is@Aload@Ali"rar;G
$this->load->library('upload');
7na ve" -ue la clase Upload est0 cargadaI el o*%eto estar0 dis&oni*le usandoG ?t=is@Aupload.
Esta"le%er 3re#eren%ias
2imilar a otras *i*liotecasI controlar0 lo -ue est0 &ermitido su*ir *asado en sus &re@erencias. 1n el controlador -ue
constru, antesI esta*lecer estas &re@erenciasG
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
// Alternativamente puede establecer preferencias llamando a la funcin
// initialize(). til si carga automticamente la clase:
// $this->upload->initialize($config);
6as &re@erencias anteriores son *astante claras &or sH mismas. De*a%o est0 la ta*la -ue descri*e todas las
&re@erencias dis&oni*les.
Gua del Usuario de CodeIgniter Versin 2.1.3 248
3re#eren%ias
3re#eren%ia Valor por
Fe#e%to
Gp%iones Fes%rip%in
uploadBpat= 3inguno 3inguno
8uta a la car&eta donde se de*erHan u*icar los arc>ivos su*idos.
6a car&eta tiene -ue ser escri*i*le , la ruta &uede ser a*soluta o
relativa.
alloCedBt;pes 3inguno 3inguno
Ci&o mime corres&ondiente a los ti&os de arc>ivo -ue se
&ermiten su*ir. 3ormalmente la e<tensin del arc>ivo se &uede
usar como ti&o mime. 2e&are varios ti&os con *arras verticales.
#ileBna$e 3inguno
3om*re de
arc>ivo deseado
2i lo esta*leceI CodeIgniter renom*rar0 el arc>ivo su*ido con
este nom*re. 6a e<tensin &rovista en el nom*re de arc>ivo
tiene -ue ser la de un ti&o de arc>ivo &ermitido.
overCrite $A621
C871O$A621
J*ooleanoK
1sta*lecida a C871I si e<iste un arc>ivo con el mismo nom*re
-ue el -ue est0 cargandoI se so*rescri*ir0. 1sta*lecida a $A621I
se le agregar0 un n:mero al nom*re de arc>ivo si e<iste otro con
el mismo nom*re.
$a1Bsi8e 0 3inguno
Cama+o m0<imo Jen ;ilo*,tesK -ue el arc>ivo &uede tener.
1sta*lecer a cero &ara sin lHmite. 3otaG 6a ma,orHa de las
instalaciones de P9P tiene su &ro&io lHmiteI seg:n se es&eci@ica
en el arc>ivo &>&.ini. 3ormalmente &or de@ecto es / 'B Jo /0#8
hBK.
$a1BCidt= 0 3inguno
Anc>o m0<imo Jen &i<elesK -ue el arc>ivo &uede tener.
1sta*lecer a cero &ara sin lHmite.
$a1B=eig=t 0 3inguno
Alto m0<imo Jen &i<elesK -ue el arc>ivo &uede tener. 1sta*lecer
a cero &ara sin lHmite.
$a1B#ilena$e 0 3inguno
6ongitud m0<ima -ue un nom*re de arc>ivo &uede tener.
1sta*lecer a cero &ara sin lHmite.
en%r;ptBna$e $A621
C871O$A621
J*ooleanoK
1sta*lecida a C871 se convertir0 el nom*re del arc>ivo a una
cadena encri&tada aleatoriamente. Puede ser :til si -uisiera -ue
la &ersona -ue su*a el arc>ivo no &ueda discernir su nom*re.
re$oveBspa%es C871
C871O$A621
J*ooleanoK
1sta*lecida a C871I cual-uier es&acio en el nom*re del arc>ivo
se convertir0 en guin de su*ra,ado. 2e recomienda.
Esta"le%er 3re#eren%ias en un 0r%=ivo de Con#igura%in
2i &re@iere no esta*lecer las &re@erencias usando este mtodoI en su lugar &uede &onerlas dentro de un arc>ivo de
con@iguracin. 2im&lemente cree un nuevo arc>ivo llamado upload.p=p , agregue el arra, ?%on#ig a ese arc>ivo.
6uego guarde el arc>ivo en %on#igupload.p=p , se lo utili"ar0 autom0ticamente. :G necesitar0 usar la @uncin
?t=is@Aupload@Ainitiali8e si guarda sus &re@erencias en un arc>ivo de con@iguracin.
Re#eren%ia de >un%iones
1st0n dis&oni*les las siguiente @uncionesG
?t=is@Aupload@AdoBupload+,
8eali"a la su*ida *asada en las &re@erencias -ue se esta*lecieron. :ota< Por de@ecto la rutina de su*ida es&era
-ue los arc>ivos vengan en un cam&o de @ormulario llamado user#ile , el @ormulario tiene -ue ser de ti&o
Nmulti&artNG
Gua del Usuario de CodeIgniter Versin 2.1.3 249
<form method="post" action="alguna_accion" enctype="multipart/form-data" />
2i -uisiera esta*lecer su &ro&io nom*re de arc>ivoI sim&lemente &ase su valor a la @uncin doBupload+,G
$field_name = "algun_nombre_de_campo";
$this->upload->do_upload($field_name);
?t=is@Aupload@Adispla;Berrors+,
8ecu&era cual-uier mensa%e de error si la @uncin doBupload+, devuelve >076E. 6a @uncin no >ace eco
autom0ticamenteI devuelve los datos &ara -ue &ueda asignarlos si resulta necesario.
>or$atear Errores
Por de@ectoI la @uncin anterior envuelve cual-uier error dentro de eti-uetas g&j. Puede esta*lecer sus &ro&ios
delimitadores con estoG
$this->upload->display_errors('<p>', '</p>');
?t=is@Aupload@Adata+,
1sta es una @uncin >el&er -ue devuelve un arra, -ue contiene todos los datos relacionados al arc>ivo -ue su*i.
1ste es el &rototi&o del arra,G
Array
(
[file_name] => mi_pic.jpg
[file_type] => image/jpeg
[file_path] => /ruta/a/su/subida/
[full_path] => /ruta/a/su/subida/jpg.jpg
[raw_name] => mi_pic
[orig_name] => mi_pic.jpg
[client_name] => mi_pic.jpg
[file_ext] => .jpg
[file_size] => 22.2
[is_image] => 1
[image_width] => 800
[image_height] => 600
[image_type] => jpeg
[image_size_str] => width="800" height="200"
)
Gua del Usuario de CodeIgniter Versin 2.1.3 250
E1pli%a%in
1sta es una e<&licacin de los Htems del arra, anterior.
[te$ Fes%rip%in
#ileBna$e 3om*re del arc>ivo -ue se su*iI inclu,endo la e<tensin
#ileBt;pe Ci&o 'ime del arc>ivo
#ileBpat= 8uta a*soluta del servidor al arc>ivo
#ullBpat= 8uta a*soluta del servidor inclu,endo el nom*re de arc>ivo
raCBna$e 3om*re del arc>ivo sin la e<tensin
origBna$e 3om*re original del arc>ivo. 2olamente es :til si usa la o&cin de nom*re encri&tado
%lientBna$e 3om*re de arc>ivo como lo &ro&orciona el agente de usuarioI antes de cual-uier &re&aracin o
incremento del nom*re de arc>ivo
#ileBe1t 1<tensin de arc>ivo con el &unto
#ileBsi8e Cama+o del arc>ivo en ;ilo*,tes
isBi$age 2i el arc>ivo es o no una imagen. 1 e imagen. 0 e no lo es
i$ageBCidt= Anc>o de la imagen
i$ageB=eig=t Altura de la imagen
i$ageBt;pe Ci&o de imagen. 3ormalmente la e<tensin sin el &unto
i$ageBsi8eBstr 7na cadena -ue contiene anc>o , alto. Qtil &ara &onerlo en una eti-ueta de imagen
Gua del Usuario de CodeIgniter Versin 2.1.3 251
Clase URI
6a Clase URI &rovee @unciones -ue los a,udan a recu&erar in@ormacin de las cadenas 78I. 2i usa ruteo 78II
tam*in &uede recu&erar in@ormacin acerca de los segmentos re(ruteados.
:ota< 1l sistema iniciali"a autom0ticamente a esta claseI &or lo -ue no >a, necesidad de >acerlo manualmente.
?t=is@Auri@Aseg$ent+n,
6e &ermite recu&erar un segmento es&ecH@ico. Donde n es el n:mero de segmento -ue desea recu&erar. 6os
segmentos se numeran de i"-uierda a derec>a. Por e%em&lo si la 786 com&leta es estaG
http://ejemplo.com/index.php/noticias/locales/deportes/river-descendio
6os n:meros de segmento de*erHan ser estosG
1. noticias
/. locales
. de&ortes
#. river(descendio
Por de@ectoI la @uncin devuelve >076E J*ooleanoK si el segmento no e<iste. 9a, un segundo &ar0metro o&cional
-ue le &ermite esta*lecer su &ro&io valor &or de@ecto si @alta el segmento. Por e%em&loI esto le dirHa a la @uncin
-ue devuelva el n:mero 0 en caso de @allaG
$product_id = $this->uri->segment(3, 0);
Esto ayuda a evitar tener que codificar algo as:
if ($this->uri->segment(3) === FALSE)
{
$product_id = 0;
}
else
{
$product_id = $this->uri->segment(3);
}
?t=is@Auri@Arseg$ent+n,
1sta @uncin es igual a la anteriorI e<ce&to -ue le &ermite recu&erar un segmento es&ecH@ico de la 78I re(ruteada
en caso -ue est usando la @uncionalidad 8uteo 78I de CodeIgniter.
?t=is@Auri@Aslas=Bseg$ent+n,
1sta @uncin es casi idntica a ?t=is@Auri@Aseg$ent+,I e<ce&to -ue agrega las *arras al comien"o ,Oo @inal
seg:n el valor del segundo &ar0metro. 2i no se usa este &ar0metroI se agrega una *arra al @inal. 1%em&losG
$this->uri->slash_segment(3);
$this->uri->slash_segment(3, 'leading');
$this->uri->slash_segment(3, 'both');
Gua del Usuario de CodeIgniter Versin 2.1.3 252
DevuelveG
1. segmentoO
/. Osegmento
. OsegmentoO
?t=is@Auri@Aslas=Brseg$ent+n,
1sta @uncin es idntica a la anteriorI e<ce&to -ue le &ermite agregar *arras a un segmento es&ecH@ico desde su
78I re(ruteada en el caso de -ue est usando la @uncionalidad 8uteo 78I de CodeIgniter.
?t=is@Auri@AuriBtoBasso%+n,
1sta @uncin le &ermite convertir segmentos 78I en arra,s asociativos de &ares %lavevalor. Considere esta 78IG
index.php/usuario/buscar/nombre/jose/lugar/UK/sexo/masculino
7sando esta @uncinI &uede convertir la 78I en un arra, asociativo con este &rototi&oG
[array]
(
'nombre' => 'jose'
'lugar' => 'UK'
'sexo' => 'masculino'
)
1l &rimer &ar0metro de la @uncin le &ermite esta*lecer un des&la"amiento. Por de@ectoI se esta*lece a ,a -ue
normalmente su 78I contendr0 un controladorO@uncin en los &rimero , segundo segmentos. 1%em&loG
$array = $this->uri->uri_to_assoc(3);
echo $array['nombre'];
1l segundo &ar0metro le &ermite esta*lecer nom*res de clave &or de@ectoI &or lo -ue el arra, devuelto &or la
@uncin siem&re contendr0 los Hndices es&eradosI a:n si desa&arecen de la 78I. 1%em&loG
$default = array('nombre', 'sexo', 'lugar', 'tipo', 'orden');
$array = $this->uri->uri_to_assoc(3, $default);
2i la 78I no contiene un valor en su de@ectoI un Hndice de arra, se esta*lecer0 a ese nom*reI con el valor de
>076E.
Por :ltimoI si no se encuentra un valor corres&ondiente &ara una clave dada Jsi >a, un n:mero im&ar de
segmentos de 78IK el valor se esta*lecer0 a >076E J*ooleanoK.
?t=is@Auri@AruriBtoBasso%+n,
1sta @uncin es idntica a la anteriorI e<ce&to -ue crea un arra, asociativo usando la 78I re(ruteada en el caso -ue
est usando la @uncionalidad 8uteo 78I de CodeIgniter.
Gua del Usuario de CodeIgniter Versin 2.1.3 253
?t=is@Auri@Aasso%BtoBuri+,
Coma como entrada un arra, asociativo , genera una cadena 78I de l. 6as claves del arra, se incluir0n en la
cadena. 1%em&loG
$array = array('producto' => 'zapatos', 'tamao' => 'large', 'color' => 'rojo');
$str = $this->uri->assoc_to_uri($array);
// Produce: producto/zapatos/tamao/large/color/rojo
?t=is@Auri@AuriBstring+,
Devuelve una cadena con la 78I com&leta. Por e%em&loI si esta es su 78I com&letaG
http://ejemplo.com/index.php/noticias/locales/345
6a @uncin devolverHa estoG
/noticias/locales/345
?t=is@Auri@AruriBstring+,
1sta @uncin es idntica a la anteriorI e<ce&to -ue devuelve la 78I re(ruteada en el caso -ue est usando la
@uncionalidad 8uteo 78I de CodeIgniter.
?t=is@Auri@AtotalBseg$ents+,
Devuelve la cantidad total de segmentos.
?t=is@Auri@AtotalBrseg$ents+,
1sta @uncin es idntica a la anteriorI e<ce&to -ue devuelve la cantidad total de segmentos en su 78I re(ruteada en
el caso -ue est usando la @uncionalidad 8uteo 78I de CodeIgniter.
?t=is@Auri@Aseg$entBarra;+,
Devuelve un arra, conteniendo los segmentos 78I. Por e%em&loG
$segs = $this->uri->segment_array();
foreach ($segs as $segment)
{
echo $segment;
echo '<br />';
}
?t=is@Auri@Arseg$entBarra;+,
1sta @uncin es igual a la anteriorI salvo -ue devuelve el arra, de segmentos en su 78I re(ruteada en caso de usar
la @uncionalidad 8uteo 78I de CodeIgniter.
Gua del Usuario de CodeIgniter Versin 2.1.3 254
Clase UserBagent
6a Clase UserBagent &ro&orciona @unciones -ue a,udan a identi@icar in@ormacin acerca de navegadoresI
dis&ositivos mvilesI o ro*ots -ue visitan su sitio. Adem0s &uede o*tener in@ormacin del re@erenteI asH como del
idioma , con%unto de caracteres so&ortados.
Ini%iali8ar la Clase
Como la ma,orHa de las clases en CodeIgniterI t>e Clase UserBagent se iniciali"a en su controlador usando la
@uncin ?t=is@Aload@Ali"rar;G
$this->load->library('user_agent');
7na ve" cargadaI el o*%eto estar0 dis&oni*le usandoG ?t=is@Aagent.
Fe#ini%iones del 0gente de Usuario
6as de@iniciones de nom*re de agente de usuario se locali"an en un arc>ivo de con@iguracin u*icado enG
appli%ation%on#iguserBagents.p=p. 2i se necesitaI &uede agregar Htems a varios arra,s de agentes de
usuario.
EDe$plo
Cuando se iniciali"a la Clase UserBagent se intentar0 determinar si el agente de usuario navegando su sitio es un
navegador =e*I un dis&ositivo mvil o un ro*ot. Cam*in se reunir0 la in@ormacin de &lata@orma si est0
dis&oni*le.
$this->load->library('user_agent');
if ($this->agent->is_browser())
{
$agent = $this->agent->browser().' '.$this->agent->version();
}
elseif ($this->agent->is_robot())
{
$agent = $this->agent->robot();
}
elseif ($this->agent->is_mobile())
{
$agent = $this->agent->mobile();
}
else
{
$agent = 'Agente de Usuario NO Identificado';
}
echo $agent;
// Informacin de la plataforma (Windows, Linux, Mac, etc.)
echo $this->agent->platform();
Gua del Usuario de CodeIgniter Versin 2.1.3 255
Re#eren%ia de >un%iones
?t=is@Aagent@AisB"roCser+,
Devuelve !RUE>076E J*ooleanoK si el agente de usuario es un navegador conocido.
if ($this->agent->is_browser('Safari'))
{
echo 'Est usndose Safari.';
}
else if ($this->agent->is_browser())
{
echo 'Est usando un navegador.';
}
:ota< 6a cadena N2a@ariN en este e%em&lo es una clave de arra, en la lista de de@iniciones de navegadores.
Puede encontrar esta lista en appli%ation%on#iguserBagents.p=p si -uiere agregar nuevos navegadores o
cam*iar las cadenas.
?t=is@Aagent@AisB$o"ile+,
Devuelve !RUE>076E J*ooleanoK si el agente de usuario es un dis&ositivo mvil conocido.
if ($this->agent->is_mobile('iphone'))
{
$this->load->view('iphone/home');
}
else if ($this->agent->is_mobile())
{
$this->load->view('mobile/home');
}
else
{
$this->load->view('web/home');
}
?t=is@Aagent@AisBro"ot+,
Devuelve !RUE>076E J*ooleanoK si el agente de usuario es un ro*ot conocido.
:ota< 6a *i*lioteca UserBagent solamente contiene las de@iniciones de ro*ot m0s comunes. 3o es una lista
com&leta de *ots. 9a, cientos de ellosI &or lo -ue *uscar a cada uno &odrHa no ser mu, e@iciente. 2i encuentra
-ue algunos *ots -ue visitan normalmente su sitio est0n @altando en la listaI &uede agregarlos a su arc>ivo
appli%ation%on#iguserBagents.p=p.
?t=is@Aagent@AisBre#erral+,
Devuelve !RUE>076E J*ooleanoK si el agente de usuario @ue remitido desde otro sitio.
?t=is@Aagent@A"roCser+,
Devuelve una cadena -ue contiene el nom*re del navegador -ue est0 viendo su sitio.
Gua del Usuario de CodeIgniter Versin 2.1.3 256
?t=is@Aagent@Aversion+,
Devuelve una cadena conteniendo el n:mero de versin del navegador -ue est0 viendo su sitio.
?t=is@Aagent@A$o"ile+,
Devuelve una cadena -ue contiene el nom*re del dis&ositivo mvil -ue est0 viendo su sitio.
?t=is@Aagent@Aro"ot+,
Devuelve una cadena -ue contiene el nom*re del ro*ot -ue est0 viendo su sitio.
?t=is@Aagent@Aplat#or$+,
Devuelve una cadena -ue contiene la &lata@orma -ue est0 viendo su sitio J6inu<I ?indo=sI )2 EI etc.K.
?t=is@Aagent@Are#errer+,
1l re@erenteI si el agente de usuario @ue remitido desde otro sitio. 3ormalmente se &rue*a de la siguiente maneraG
if ($this->agent->is_referral())
{
echo $this->agent->referrer();
}
?t=is@Aagent@AagentBstring+,
Devuelve una cadena conteniendo el agente de usuario com&leto. 3ormalmente ser0 algo como estoG
Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.4) Gecko/20060613
Camino/1.0.2
?t=is@Aagent@Aa%%eptBlang+,
6e &ermite determinar si el agente de usuario ace&ta un idioma en &articular. 1%em&loG
if ($this->agent->accept_lang('en'))
{
echo 'Acepta Ingls!';
}
:ota< 3ormalmente esta @uncin no es mu, con@ia*leI ,a -ue algunos navegadores no &roveen in@ormacin del
idioma e incluso entre a-uellos -ue lo >acenI no siem&re es e<acta.
?t=is@Aagent@Aa%%eptB%=arset+,
6e &ermite determinar si el agente de usuario ace&ta un con%unto de caracteres en &articular. 1%em&loG
Gua del Usuario de CodeIgniter Versin 2.1.3 257
if ($this->agent->accept_charset('utf-8'))
{
echo 'Su navegador soporta UTF-8!';
}
:ota< 3ormalmente esta @uncin no es mu, con@ia*leI ,a -ue algunos navegadores no &roveen in@ormacin
acerca del con%unto de caracteres e incluso entre a-uellos -ue lo >acenI no siem&re es e<acta.
Gua del Usuario de CodeIgniter Versin 2.1.3 258
Clases YH7@R3C ; 6ervidor de YH7@R3C
6a Clase YH7R3C de CodeIgniter le &ermite enviar solicitudes a otro servidorI o con@igurar su &ro&io servidor E'6(
8PC &ara reci*ir solicitudes.
2Nu9 es YH7@R3C5
2im&lemente es una @orma en -ue dos com&utadoras se comuni-uen &or Internet usando E'6. 7na com&utadoraI
-ue llamaremos %lienteI envHa una soli%itud E'6(8PC a otra com&utadoraI -ue llamaremos servidor. 7na ve"
-ue el servidor reci*e , &rocesa la solicitudI enviar0 de regreso al cliente una respuesta.
Por e%em&loI usando la API de 'eta?e*logI un Cliente E'6(8PC Jusualmente una >erramienta de &u*licacin de
escritorioK enviar0 una solicitud a un 2ervidor E'6(8PC -ue corre en su sitio. 1sta solicitud &uede ser una nueva
entrada al =e*log enviada &or la &u*licacinI o &odrHa ser una solicitud &ara editar una entrada e<istente. Cuando
el 2ervidor E'6(8PC reci*e la solicitudI la e<aminar0 &ara determinar -ue claseOmtodo de*erHa llamar &ara
&rocesar la solicitud. 7na ve" &rocesadaI el servidor envHa de regreso un mensa%e de res&uesta.
Para leer las es&eci@icaciones detalladasI &uede visitar el sitio de E'6(8PC.
Ini%iali8ar la Clase
Como la ma,orHa de las clases en CodeIgniterI las clases YH7@R3C , EH7@R3C6 se iniciali"an en su controlador
usando la @uncin ?t=is@Aload@Ali"rar;G
Para cargar la Clase E'68PC se usar0G
$this->load->library('xmlrpc');
7na ve" cargadaI el o*%eto de la *i*lioteca 1$l@rp% estar0 dis&oni*le usandoG ?t=is@A1$lrp%.
Para cargar la Clase del 2ervidor E'6(8PC se usar0G
$this->load->library('xmlrpc');
$this->load->library('xmlrpcs');
7na ve" cargadaI el o*%eto de la *i*lioteca 1$l@rp%s estar0 dis&oni*le usandoG ?t=is@A1$lrp%s.
:ota< Al usar la Clase del 2ervidor E'6(8PC tiene -ue cargar 0H&06 Clases E'68PC.
Enviar 6oli%itudes YH7@R3C
Para enviar una solicitud a un 2ervidor E'6(8PC tiene -ue es&eci@icar la siguiente in@ormacinG
6a 786 del servidor
1l mtodo del servidor -ue desea invocar
6os datos de la solicitud Jse e<&lica m0s a*a%oK
1ste es un e%em&lo -ue envHa un &ing sim&le de ?e*logs.com &ara Ping(o('atic.
Gua del Usuario de CodeIgniter Versin 2.1.3 259
$this->load->library('xmlrpc');
$this->xmlrpc->server('http://rpc.pingomatic.com/', 80);
$this->xmlrpc->method('weblogUpdates.ping');
$request = array('Mi Photoblog', 'http://www.mi-sitio.com/photoblog/');
$this->xmlrpc->request($request);
if ( ! $this->xmlrpc->send_request())
{
echo $this->xmlrpc->display_error();
}
E1pli%a%in
1l cdigo anterior iniciali"a la Clase YH7R3CI esta*lece la 786 del servidor , el mtodo a llamarse
J=e*log7&dates.&ingK. 6a solicitud Jen este casoI el tHtulo , la 786 de su sitioK se coloca en un arra, &ara
trans&ortarloI , se com&ila usando la @uncin re4uest+,. $inalmenteI se envHa la solicitud com&leta. 2i el mtodo
sendBre4uest+, devuelve >076E mostraremos en mensa%e de error devuelto &or el 2ervidor E'6(8PC.
0nato$a de una 6oli%itud
7na soli%itud E'6(8PC es sim&lemente los datos enviados al 2ervidor E'6(8PC. 7n par'$etro de soli%itud es
cada &ie"a de datos en una solicitud. 1l e%em&lo anterior tiene dos &ar0metrosG la 786 , el tHtulo de su sitio.
Cuando el 2ervidor E'6(8PC reci*e su solicitudI *uscar0 los &ar0metro -ue necesita.
6os &ar0metro de solicitud se tienen -ue &oner en un arra, &ara trans&ortarlos , cada &ar0metro solo &uede ser
de uno de los siete ti&os de dato JcadenasI n:merosI @ec>asI etcK. 2i sus &ar0metros son algo distinto a cadenasI
tendr0 -ue incluir los ti&os de datos en el arra, de la solicitud.
1ste es un e%em&lo de un arra, sim&le con tres &ar0metrosG
$request = array('Jose', 'Perez', 'www.algun-sitio.com');
$this->xmlrpc->request($request);
2i usa ti&os de datos distintos a cadenasI o si tiene varios ti&os de datos di@erentesI colocar0 cada &ar0metro en su
&ro&io arra,I con el ti&o de dato en la segunda &osicinG
$request = array (
array('Jose', 'string'),
array('Perez', 'string'),
array(FALSE, 'boolean'),
array(12345, 'int')
);
$this->xmlrpc->request($request);
6a seccin ti&os de Datos m0s a*a%o tiene la lista com&leta de los ti&os de datos.
Crear un 6ervidor YH7@R3C
7n 2ervidor E'6(8PC act:a como un &olicHa de tr0nsitoI es&erando solicitudes entrantes , redireccion0ndolas a la
@uncin adecuada &ara su &rocesamiento.
Crear su &ro&io 2ervidor E'6(8PC im&lica iniciali"ar la Clase de 2ervidor E'6(8PC en su controlador donde es&era
-ue a&are"ca la solicitud entranteI luego con@igurar un arra, con instrucciones ma&eadas &ara -ue las solicitudes
Gua del Usuario de CodeIgniter Versin 2.1.3 260
entrantes se &uedan enviar a la clase , mtodo a&ro&iados &ara &rocesarse.
A-uH >a, un e%em&loG
$this->load->library('xmlrpc');
$this->load->library('xmlrpcs');
$config['functions']['nuevo_mensaje'] = array('function' =>
'Mi_blog.nueva_entrada'),
$config['functions']['actualiza_mensaje'] = array('function' =>
'Mi_blog.actualiza_entrada');
$config['object'] = $this;
$this->xmlrpcs->initialize($config);
$this->xmlrpcs->serve();
1l e%em&lo anterior contiene un arra, -ue es&eci@ica dos solicitudes de mtodo -ue el 2ervidor &ermite. 6os
mtodos &ermitidos est0n en el lado i"-uierdo del arra,. Cuando cual-uiera de ellos se reci*eI ser0 ma&eado a la
clase , mtodo en la derec>a.
6a clave Yo"De%tY es una clave es&ecial a la -ue se le &asa un o*%eto de clase instanciadoI -ue es necesario cuando
el mtodo -ue se est0 ma&eando no es &arte del su&er o*%eto CodeIgniter.
1n otras &ala*ras si un Clente E'6(8PC envHa una solicitud &ara el mtodo nuevoB$ensaDeI su servidor cargar0
la clase HiB"log , llamar0 a la @uncin nuevaBentrada. 2i la solicitud es &ara el mtodo a%tuali8aB$ensaDeI
su servidor cargar0 la clase HiB"log , llamar0 a la @uncin a%tuali8aBentrada.
6os nom*res de @uncin en el e%em&lo anterior son ar*itrarios. 7d decidir0 cmo se de*erHan llamar en su servidor
o si est0 usando APIs estandari"adasI como Blogger o 'eta?e*logI usar0 sus nom*res de @uncin.
9a, dos claves de con@iguracin adicionales -ue &uede usar al iniciali"ar la clase del servidorG de"ug se &uede
esta*lecer a !RUE a @in de >a*ilitar la de&uracin , 1ssB%lean -ue se &uede esta*lecer a >076E &ara evitar el
envHo de datos data a travs de la @uncin 1ssB%lean+, de la *i*lioteca 2ecurit,.
3ro%esar las 6oli%itudes del 6ervidor
Cuando el 2ervidor E'6(8PC reci*e una solicitud , carga la claseOmtodo &ara &rocesarI &asar0 un o*%eto a ese
mtodo conteniendo los datos enviados &or el cliente.
Al usar el e%em&lo anteriorI si se solicita el mtodo nuevoB$ensaDeI el servidor es&erar0 una clase -ue e<ista con
este &rototi&oG
class Gi_!log extends CI_Controller {
function nue*o_mensa7e($request)
{
}
}
6a varia*le ?re4uest es un o*%eto com&ilado &or el 2ervidorI -ue contiene los datos enviados &or el Cliente E'6(
8PC. 7sando este o*%etoI tendr0 acceso a los &ar0metros de solicitud &ermitindole &rocesar la solicitud. Cuando lo
>a,a >ec>oI enviar0 una res&uesta de regreso al Cliente.
A*a%o >a, un e%em&lo del mundo real -ue usa la API de Blogger. 7no de los mtodos en la API de Blogger es
getUserIn#o+,. 7sando este mtodoI un Cliente E'6(8PC &uede enviar al 2ervidor un nom*re de usuario ,
contrase+a , de regreso el 2ervidor devuelve in@ormacin acerca de ese usuario en &articular Ja&odoI ID de
Gua del Usuario de CodeIgniter Versin 2.1.3 261
usuarioI direccin de emailI etcK. A-uH se muestra cmo lucirHa la @uncin de &rocesamientoG
class Gi_!log extends CI_Controller {
function get-serInfo(%reCuest)
{
$username = 'pirulo';
$password = 'pirulo_pass';
$this->load->library('xmlrpc');
$parameters = $request->output_parameters();
if ($parameters['1'] != $username AND $parameters['2'] != $password)
{
return $this->xmlrpc->send_error_message('100', 'Acceso invlido');
}
$response = array(array(
'nickname' => array('Pirulo','string'),
'userid' => array('99','string'),
'url' => array('http://www.su-
sitio.com','string'),
'email' => array('jperez@su-sitio.com','string'),
'lastname' => array('Perez','string'),
'firstname' => array('Jose','string')
),
'struct');
return $this->xmlrpc->send_response($response);
}
}
:otas<
6a @uncin outputBpara$eters+, recu&era un arra, inde<ado corres&ondiente a los &ar0metros de solicitud
enviados &or el cliente. 1n el e%em&lo anteriorI los &ar0metros de salida ser0n el nom*re del usuario , la
contrase+a.
2i el nom*re del usuario , contrase+a enviados &or el cliente no @ueran v0lidosI se devuelve un mensa%e de error
usando sendBerrorB$essage+,.
2i la o&eracin @ue e<itosaI al cliente le ser0 enviado un arra, de res&uesta conteniendo la in@ormacin del usuario.
>or$atear una Respuesta
2imilar a las 2olicitudesI las 8es&uestas se tienen -ue @ormatear como un arra,. 2in em*argoI a di@erencia de las
solicitudesI una res&uesta es un arra; 4ue %ontiene un te$ si$ple. 1ste Htem &uede ser un arra, con varios
arra,s adicionalesI &ero solamente &uede >a*er un Hndice &rimario. 1n otras &ala*rasI el &rototi&o *0sico es esteG
$response = array('Datos de respuesta', 'array');
2in em*argoI las res&uestas normalmente contienen varias &ie"as de in@ormacin. Para lograr esto >a, -ue &oner
la res&uesta en su &ro&io arra, &ara -ue el arra, &rimario siga conteniendo una sola &ie"a de datos. 1ste es un
e%em&lo -ue muestra cmo se &uede lograrG
Gua del Usuario de CodeIgniter Versin 2.1.3 262
$response = array (
array(
'first_name' => array('Jose', 'string'),
'last_name' => array('Perez', 'string'),
'member_id' => array(123435, 'int'),
'todo_list' => array(array('limpiar la casa',
'llamar a mam', 'regar las plantas'), 'array'),
),
'struct'
);
Advierta -ue el arra, anterior est0 @ormateado como una stru%t. 1ste es el ti&o de dato m0s com:n &ara
res&uestas.
Como con las solicitudesI una res&uesta tiene -ue ser de uno de los siete ti&os de datos listados en la seccin
Ci&os de Dato.
Enviar una Respuesta de Error
2i necesita enviar al cliente un res&uesta de errorI usar0 lo siguienteG
return $this->xmlrpc->send_error_message('123', 'Dato solicitado no disponible');
1l &rimer &ar0metro es el n:mero del errorI mientras -ue el segundo &ar0metro es el mensa%e del error.
Crear sus 3ropios Cliente ; 6ervidor
Para a,udarlo a com&render todo lo tratado >asta el momentoI crearemos un &ar de controladores -ue act:an
como Cliente , 2ervidor E'6(8PC. 7sar0 el Cliente &ara enviar una solicitud al 2ervidor , reci*ir0 una res&uesta.
El Cliente
7sando un editor de te<toI crear un controlador llamado 1$lrp%B%lient.p=p. Dentro su,oI colocar este cdigo ,
guardarlo en su car&eta appli%ation%ontrollersG
<?php
class Xmlrpc_client extends CI_Controller {
function index()
{
$this->load->helper('url');
$server_url = site_url('xmlrpc_server');
$this->load->library('xmlrpc');
$this->xmlrpc->server($server_url, 80);
$this->xmlrpc->method('Greetings');
$request = array('Cmo le est yendo?');
$this->xmlrpc->request($request);
if ( ! $this->xmlrpc->send_request())
{
echo $this->xmlrpc->display_error();
Gua del Usuario de CodeIgniter Versin 2.1.3 263
}
else
{
echo '<pre>';
print_r($this->xmlrpc->display_response());
echo '</pre>';
}
}
}
?>
:ota< 1n el cdigo anterior se est0 usando un N>el&er urlN. Puede encontrar m0s in@ormacin en la &0gina
$unciones 9el&er.
El 6ervidor
7sando un editor de te<toI crear un controlador llamado 1$lrp%Bserver.p=p. Dentro su,oI colocar este cdigo ,
guardarlo en su car&eta appli%ation%ontrollersG
<?php
class Xmlrpc_server extends CI_Controller {
function index()
{
$this->load->library('xmlrpc');
$this->load->library('xmlrpcs');
$config['functions']['Greetings'] = array('function' =>
'Xmlrpc_server.process');
$this->xmlrpcs->initialize($config);
$this->xmlrpcs->serve();
}
function process($request)
{
$parameters = $request->output_parameters();
$response = array(
array(
'you_said' => $parameters['0'],
'i_respond' => 'No del todo mal.'),
'struct');
return $this->xmlrpc->send_response($response);
}
}
?>
3ru9"eloO
A>ora visite su sitio usando una 786 similar a estaG
ejemplo.com/index.php/xmlrpc_client/
Gua del Usuario de CodeIgniter Versin 2.1.3 264
A>ora de*erHa ver el mensa%e -ue envHa al servidor , la res&uesta -ue le devuelve.
1l cliente -ue cre envHa un mensa%e JN]Cmo le est0 ,endo^NK al servidorI %unto con una solicitud &ara le mtodo
NAreetingsN. 1l 2ervidor reci*e la solicitud , la ma&ea en la @uncin pro%ess+,I donde se devuelve una res&uesta.
Usar 0rra;s 0so%iativos en un 3ar'$etro de 6oli%itud
2i desea usar un arra, asociativo en los &ar0metro del mtodoI necesitar0 usar un ti&o de dato structG
$request = array(
array(
// Param 0
array(
'nombre'=>'Jose'
),
'struct'
),
array(
// Param 1
array(
'tamao'=>'L',
'forma'=>'redonda'
),
'struct'
)
);
$this->xmlrpc->request($request);
Puede recu&erar un arra, asociativo al &rocesar la solicitud en el 2ervidor.
$parameters = $request->output_parameters();
$name = $parameters['0']['nombre'];
$size = $parameters['1']['tamao'];
$size = $parameters['1']['forma'];
Re#eren%ia de >un%iones YH7@R3C
?t=is@A1$lrp%@Aserver+,
1sta*lece la 786 , el n:mero de &uerto del servidor al -ue se enviar0 una solicitudG
$this->xmlrpc->server('http://www.aveces.com/pings.php', 80);
?t=is@A1$lrp%@Ati$eout+,
1sta*lece el tiem&o de es&era Jen segundosK des&us del cual se cancelar0 la solicitudG
$this->xmlrpc->timeout(6);
Gua del Usuario de CodeIgniter Versin 2.1.3 265
?t=is@A1$lrp%@A$et=od+,
1sta*lece el mtodo -ue se solicitar0 desde el servidor E'6(8PCG
$this->xmlrpc->method('metodo');
Donde $etodo es el nom*re del mtodo.
?t=is@A1$lrp%@Are4uest+,
Coma un arra, de datos , constru,e la solicitud a enviarse al servidor E'6(8PCG
$request = array(array('Mi Photoblog', 'string'),
'http://www.su-sitio.com/photoblog/');
$this->xmlrpc->request($request);
?t=is@A1$lrp%@AsendBre4uest+,
6a @uncin de envHo de la solicitud. Devuelve el *ooleano !RUE o >076E *asado en el <ito o @racasoI &ermitiendo
usarlo en sentencias condicionales.
?t=is@A1$lrp%@AsetBde"ug+!RUE,
9a*ilita la de&uracinI mostrando una variedad de in@ormacin , datos de error :tiles durante el desarrollo.
?t=is@A1$lrp%@Adispla;Berror+,
Devuelve un mensa%e de error como una cadena si la solicitud @alla &or alguna ra"n.
echo $this->xmlrpc->display_error();
?t=is@A1$lrp%@Adispla;Bresponse+,
Devuelve la res&uesta desde el servidor remoto una ve" -ue se reci*e la solicitud. 6a res&uesta normalmente ser0
un arra, asociativo.
$this->xmlrpc->display_response();
?t=is@A1$lrp%@AsendBerrorB$essage+,
1sta @uncin le &ermite enviar un mensa%e de error desde su servidor al cliente. 1l &rimer &ar0metro es el n:mero
del errorI mientras -ue el segundo &ar0metro es el mensa%e de error.
return $this->xmlrpc->send_error_message('123',
'Datos solicitados no disponibles');
Gua del Usuario de CodeIgniter Versin 2.1.3 266
?t=is@A1$lrp%@AsendBresponse+,
6e &ermite enviar una res&uesta desde su servidor al cliente. Con este mtodo se tiene -ue enviar un arra, de
datos v0lidos.
$response = array(
array(
'flerror' => array(FALSE, 'boolean'),
'message' => "Thanks for the ping!"
)
'struct');
return $this->xmlrpc->send_response($response);
!ipos de Fato
De acuerdo a la es&eci@icacin E'6(8PC >a, siete ti&os de valores -ue se &ueden enviar mediante E'6(8PCG
int o i#
*oolean
string
dou*le
dateCime.iso8601
*ase6#
struct Jcontiene arra, de valoresK
arra, Jcontiene arra, de valoresK
Gua del Usuario de CodeIgniter Versin 2.1.3 267
Clase dip
6a Clase dip de CodeIgniter le &ermite crear arc>ivos Fi&. 6os arc>ivos se &uede descargar a su escritorio o
guardarlos en un directorio.
Ini%iali8ar la Clase
Como la ma,orHa de las clases en CodeIgniterI la clase dip se iniciali"a en su controlador usando la @uncin ?t=is@
Aload@Ali"rar;G
$this->load->library('zip');
7na ve" cargadoI el o*%eto de la *i*lioteca dip estar0 dis&oni*le usandoG ?t=is@A8ip.
EDe$plo de Uso
1ste e%em&lo muestra como com&rimir un arc>ivoI guardarlo en una car&eta de su servidor , descargarlo a su
escritorio.
$name = 'mis_datos.txt';
$data = 'Una cadena de info';
$this->zip->add_data($name, $data);
// Escribe el archivo zip a una carpeta en el servidor. Llmelo "mi_backup.zip"
$this->zip->archive('/ruta/al/directorio/mi_backup.zip');
// Descarga el archivo a su escritorio. Llmelo "mi_backup.zip"
$this->zip->download('mi_backup.zip');
Re#eren%ia de >un%iones
?t=is@A8ip@AaddBdata+,
6e &ermite agregar datos al arc>ivo Fi&. 1l &rimer &ar0metro tiene -ue contener el nom*re -ue -uisiera darle al
arc>ivo , el segundo &ar0metro tiene -ue contener los datos en @orma de cadenaG
$name = 'mi_bio.txt';
$data = 'Nac en un ascensor...';
$this->zip->add_data($name, $data);
2e le &ermite varias llamadas a esta @uncin con el @in de a+adir varios arc>ivos a su arc>ivo com&rimido. 1%em&loG
$name = 'mis_datos1.txt';
$data = 'Una cadena de datos';
$this->zip->add_data($name, $data);
$name = 'mis_datos2.txt';
$data = 'Otra cadena de datos';
$this->zip->add_data($name, $data);
Gua del Usuario de CodeIgniter Versin 2.1.3 268
) &uede &asar varios arc>ivos usando un arra,G
$data = array(
'mis_datos1.txt' => 'Una cadena de datos',
'mis_datos2.txt' => 'Otra cadena de datos'
);
$this->zip->add_data($data);
$this->zip->download('mi_backup.zip');
2i -uisiera organi"ar sus datos com&rimidos en su*car&etasI incluir la ruta como &arte del arc>ivoG
$name = 'personal)mi_bio.txt';
$data = 'Nac en un ascensor...';
$this->zip->add_data($name, $data);
1l e%em&lo anterior u*icar0 $iB"io.t1t dentro de la car&eta llamada personal.
?t=is@A8ip@AaddBdir+,
6e &ermite agregar un directorio. 7sualmente esta @uncin es innecesaria ,a -ue &uede u*icar sus datos en
car&etas al usar ?t=is@A8ip@AaddBdata+,I &ero si -uisiera crear una car&eta vacHa &uede >acerlo. 1%em&loG
$this->zip->add_dir('mi_carpeta'); // Crea una carpeta llamada "mi_carpeta"
?t=is@A8ip@AreadB#ile+,
6e &ermite com&rimir un arc>ivo -ue ,a e<iste en alguna &arte de su servidor. 2uministre la ruta al arc>ivo , la
clase Fi& -ue leer0 , agregar0 el arc>ivoG
$path = '/ruta/a/la/foto.jpg';
$this->zip->read_file($path);
// Descarga el archivo a su escritorio. Llmelo "mi_backup.zip"
$this->zip->download('mi_backup.zip');
2i -uisiera -ue el arc>ivo Fi& mantenga la estructura de directorios del arc>ivo en lI &ase !RUE J*ooleanoK en el
segundo &ar0metro. 1%em&loG
$path = '/ruta/a/la/foto.jpg';
$this->zip->read_file($path, TRUE);
// Descarga el archivo a su escritorio. Llmelo "mi_backup.zip"
$this->zip->download('mi_backup.zip');
1n el e%em&lo anteriorI #oto.Dpg se u*icar0 dentro de tres car&etasG rutaala
Gua del Usuario de CodeIgniter Versin 2.1.3 269
?t=is@A8ip@AreadBdir+,
6e &ermite com&rimir una car&eta J, sus com&onentesK -ue ,a e<isten en alguna &arte del servidor. 2uministre la
ruta de arc>ivo al directorio , la clase "i& -ue recursivamente lo leer0 , recrear0 como arc>ivo Fi&. Codos los
arc>ivos contenidos dentro de la ruta suministrada se codi@icar0nI asH como cual-uier su*car&eta contenida dentro
su,o. 1%em&loG
$path = '/ruta/a/su/directorio/';
$this->zip->read_dir($path);
// Descarga el archivo a su escritorio. Llmelo "mi_backup.zip"
$this->zip->download('mi_backup.zip');
Por de@ectoI el arc>ivo Fi& u*icar0 todos los directorios listados en el &rimer &ar0metro dentro del "i&. 2i -uiere
-ue el 0r*ol -ue &recede a la car&eta destino se ignoreI &uede &asar >076E J*ooleanoK en el segundo &ar0metro.
1%em&loG
$path = '/ruta/a/su/directorio/';
$this->zip->read_dir($path, FALSE);
1sto crear0 un FIP con la car&eta dire%torio dentroI luego todas las su*car&etas almacenadas correctamente
dentro de ellaI &ero no incluir0 las car&etas rutaasu.
?t=is@A8ip@Aar%=ive+,
1scri*e al directorio de su servidor un arc>ivo codi@icado en Fi&. 1nvHa una ruta v0lida del servidor terminando en el
nom*re del arc>ivo. Aseg:rese -ue el directorio es escri*i*le Jusualmente 666 o 777 est0 *ienK. 1%em&loG
$this->zip->archive('/ruta/a/la/carpeta/mi_archivo.zip');
// Crea un archivo llamado mi_archivo.zip
?t=is@A8ip@AdoCnload+,
Provoca -ue el arc>ivo Fi& sea descargado de su servidor. A la @uncin de*erHa &as0rsele el nom*re -ue -uisiera
-ue el arc>ivo Fi& tuviera. 1%em&loG
$this->zip->download('algun_nombre.zip');
// El archivo se llamar "algun_nombre.zip"
:ota< 3o mostrar ning:n dato en el controlador en -ue llamada esta @uncinI ,a -ue envHa varios enca*e"ados
de servidor -ue causan la descarga ocurra , el arc>ivo sea tratado como *inario.
?t=is@A8ip@AgetB8ip+,
Devuelve los datos del arc>ivo com&rimido con Fi&. 1n generalI usted no necesitar0 esta @uncin a menos -ue
-uiera >acer algo :nico con los datos. 1%em&loG
Gua del Usuario de CodeIgniter Versin 2.1.3 270
$name = 'mi_bio.txt';
$data = 'Nac en un ascensor...';
$this->zip->add_data($name, $data);
$zip_file = $this->zip->get_zip();
?t=is@A8ip@A%learBdata+,
6a clase dip cac>ea sus datos "i& &ara -ue no se necesite recom&ilar el arc>ivo Fi& &ara cada @uncin -ue use. 2in
em*argoI si necesita crear varios Fi&sI cada uno con datos di@erentesI &uede *orrar el cac> entre llamadas.
1%em&loG
$name = 'mi_bio.txt';
$data = 'Nac en un ascensor...';
$this->zip->add_data($name, $data);
$zip_file = $this->zip->get_zip();
%tis-3#ip-3clear_data&'5
$name = 'foto.jpg';
$this->zip->read_file("/ruta/a/foto.jpg"); // Lee el contenido del archivo
$this->zip->download('mis_fotos.zip');
Gua del Usuario de CodeIgniter Versin 2.1.3 271
Friver de 0l$a%ena$iento en Ca%=9
CodeIgniter cuenta con =ra&&ers &ara las @ormas m0s &o&ulares de cac>s din0micos , r0&idos. CodosI e<ce&to el
cac> *asados en arc>ivosI necesitan re-uisitos de servidor es&ecH@icos. 2e lan"ar0 una 1<ce&cin $atal si no se
cum&len los re-uisitos del servidor.
EDe$plo de Uso
1l e%em&lo siguiente cargar0 el driver de cac> de 03C ,I si no se encuentra dis&oni*le en el entorno de
alo%amientoI recurrir0 al cac> *asado en arc>ivo.
$this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));
if ( ! $foo = $this->cache->get('foo'))
{
echo 'Guardando en el cach!<br />';
$foo = 'foobarbaz!';
// Guardar en el cache por 5 minutos
$this->cache->save('foo', $foo, 300);
}
echo $foo;
Re#eren%ia de >un%iones
isBsupported+driverKLstringLM,
1sta @uncin se activa autom0tivamente cuando se accede a los drivers mediante ?t=is@A%a%=e@Aget+,. 2in
em*argoI si se usa un driver individualI llame a esta @uncin &ara estar seguro -ue el entorno de alo%amiento
so&orta este driver.
if ($this->cache->apc->is_supported())
{
if ($data = $this->cache->apc->get('my_cache'))
{
// hacer cosas.
}
}
get+idKLstringLM,
1sta @uncin intentar0 o*tener un Htem desde el cac>. 2i el Htem no e<isteI la @uncin devolver0 >076E.
$foo = $this->cache->get('tem_en_cach');
save+idKLstringLMJ dataKL$i1edLMJ ttlKLintLM,
1sta @uncin guardar0 un Htem en el cac>. 2i la o&eracin @allaI la @uncin devolver0 >076E. 1l tercer &ar0metro
o&cional JVCime Co 6iveWK se esta*lece &or de@ecto a 60 segundos.
Gua del Usuario de CodeIgniter Versin 2.1.3 272
$this->cache->save('cache_item_id', 'datos_para_guardar');
delete+idKLstringLM,
1sta @uncin *orrar0 un Htem es&ecH@ico del cac>. 2i la o&eracin @allaI la @uncin devolver0 >076E.
$this->cache->delete('cache_item_id');
%lean+,
1sta @uncin li$piar' todo el cac>. 2i la o&eracin @allaI la @uncin devolver0 >076E.
$this->cache->clean();
%a%=eBin#o+,
1sta @uncin devolver0 in@ormacin del cac> entero.
var_dump($this->cache->cache_info());
getB$etadata+idKLstringLM,
1sta @uncin devolver0 in@ormacin detallada de un Htem es&ecH@ico en el cac>.
var_dump($this->cache->get_metadata('tem_en_cach'));
Frivers
Ca%=9 0lternativo de 3.3 +03C,
Codas las @unciones mencionadas anteriormente se &ueden acceder sin &asar un ada&tador es&ecH@ico al cargador
del driverI de la siguiente maneraG
$this->load->driver('cache');
$this->cache->apc->save('foo', 'bar', 10);
Para m0s in@ormacin acerca de APCI &or @avor ver http://php.net/apc
Ca%=9 "asado en ar%=ivos
A di@erencia del almacenamiento en cac> de la Clase GutputI el driver del cac> *asado en arc>ivos &ermite -ue
se almacenen en cac> &orciones de arc>ivos de vistas. 7se esto con cuidado , aseg:rese medir el rendimiento de
su a&licacinI &ara determinar el &unto en -ue las o&eraciones 1O2 al disco neutralicen el *ene@icio o*tenido &or el
cac>.
Codas las @unciones mencionadas anteriormente se &ueden acceder sin &asar un ada&tador es&ecH@ico al cargador
del driverI de la siguiente maneraG
Gua del Usuario de CodeIgniter Versin 2.1.3 273
$this->load->driver('cache');
$this->cache->file->save('foo', 'bar', 10);
Ca%=9 He$%a%=ed
2e &ueden es&eci@icar varios servidores de 'emcac>ed en el arc>ivo de con@iguracin $e$%a%=ed.p=pI u*icado
en el directorio appli%ation%on#ig.
Codas las @unciones mencionadas anteriormente se &ueden acceder sin &asar un ada&tador es&ecH@ico al cargador
del driverI de la siguiente maneraG
$this->load->driver('cache');
$this->cache->memcached->save('foo', 'bar', 10);
Para m0s in@ormacin acerca de 'emcac>edI &or @avor ver http://php.net/memcached
Ca%=9 #i%ti%io
2e trata de un *ac;end de cac> -ue siem&re Y@altar0Y. 3o almacena datosI &ero le &ermite mantener el cdigo del
almacenamiento en cac> en entornos -ue no so&ortan el cac> -ue 7d eligi.
Gua del Usuario de CodeIgniter Versin 2.1.3 274
Re#eren%ia de .elpers
Gua del Usuario de CodeIgniter Versin 2.1.3 275
.elper 0rra;
1l arc>ivo del 9el&er Arra, contiene @unciones -ue lo a,udan a tra*a%ar con arra,s.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('array');
1st0n dis&oni*les las siguientes @uncionesG
ele$ent+,
6e &ermite e<traer un elemento desde un arra,. 6a @uncin &rue*a si el Hndice del arra, est0 esta*lecido , si tiene
valor. 2i el valor e<iste se devuelve. 2i el valor no e<isteI devuelve >076EI o lo -ue >a,a es&eci@icado como valor
&or de@ecto en el tercer &ar0metro. 1%em&loG
$array = array('color' => 'red', 'shape' => 'round', 'size' => '');
// Devuelve "red"
echo element('color', $array);
// Devuelve NULL
echo element('size', $array, NULL);
rando$Bele$ent+,
Coma como entrada un arra, , devuelve un elemento su,o al a"ar. 1%em&lo de usoG
$quotes = array(
"Me parece que cuanto trabajo ms duro, ms suerte parezco tener.
- Thomas Jefferson",
"No te quedes en la cama, a menos que puedas hacer dinero en ella.
- George Burns",
"No perdimos el juego, simplemente nos quedamos sin tiempo.
- Vince Lombardi",
"Si todo parece bajo control, usted no va lo suficientemente rpido.
- Mario Andretti",
"La realidad es simplemente una ilusin, aunque una muy persistente.
- Albert Einstein",
"La suerte favorece a la mente preparada.
- Louis Pasteur",
"Hay algo mal que no est bien.
- Ricardo Bravo"
);
echo random_element($quotes);
ele$ents+,
6e &ermite e<traer una cantidad de elementos desde un arra,. 6a @uncin &rue*a si cada uno de los Hndices del
arra, est0 esta*lecido. 2i un Hndice no e<iste se esta*lece a >076EI o lo -ue sea -ue se >a,a es&eci@icado como
valor &or de@ecto a travs del tercer &ar0metro. 1%em&loG
Gua del Usuario de CodeIgniter Versin 2.1.3 276
$array = array(
'color' => 'red',
'shape' => 'round',
'radius' => '10',
'diameter' => '20'
);
$my_shape = elements(array('color', 'shape', 'height'), $array);
6o anterior devolver0 el siguiente arra,G
array(
'color' => 'red',
'shape' => 'round',
'height' => FALSE
);
Puede esta*lecer el tercer &ar0metro a cual-uier valor &or de@ecto -ue -uieraG
$my_shape = elements(array('color', 'shape', 'height'), $array, NULL);
6o anterior devolver0 el siguiente arra,G
array(
'color' => 'red',
'shape' => 'round',
'height' => NULL
);
1sto es :til al enviar el arra, ?B3G6! a uno de sus 'odelos. 1sto im&ide -ue los usuarios envHen datos 3G6!
adicionales &ara ingresarse en las ta*lasG
$this->load->model('post_model');
$this->post_model->update(elements(array('id', 'title', 'content'), $_POST));
1sto asegura -ue solamente los cam&os idI title , content se enviar0n &ara actuali"arse.
Gua del Usuario de CodeIgniter Versin 2.1.3 277
.elper C03!C.0
1l arc>ivo del 9el&er CAPCC9A contiene @unciones -ue lo a,udan en la creacin de im0genes CAPCC9A.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('captcha');
1st0n dis&oni*les las siguientes @uncionesG
%reateB%apt%=a+?data,
Coma como entrada un arra, de in@ormacin &ara generar el CAPCC9A , crea la imagen &ara sus es&eci@icacionesI
devolviendo un arra, asociativo de datos acerca de la imagen.
[array]
(
'image' => IMAGE TAG
'time' => TIMESTAMP (in microtime)
'word' => CAPTCHA WORD
)
i$age es la eti-ueta de imagen realG
<img src="http://example.com/captcha/12345.jpg" width="140" height="50" />
ti$e es la marca de tiem&o usada como nom*re de la imagen sin la e<tensin del arc>ivo. 2er0 un n:mero como
esteG 11.61/144.#//
Cord es la &ala*ra -ue a&arece en la imagen ca&tc>aI -ue si no se la suministra a la @uncinI ser0 una cadena
aleatoria.
Usar el .elper C03!C.0
7na ve" cargadoI &uede generar un ca&tc>a asHG
$vals = array(
'word' => 'Random word',
'img_path' => './captcha/',
'img_url' => 'http://example.com/captcha/',
'font_path' => './path/to/fonts/texb.ttf',
'img_width' => '150',
'img_height' => 30,
'expiration' => 7200
);
$cap = create_captcha($vals);
echo $cap['image'];
Gua del Usuario de CodeIgniter Versin 2.1.3 278
6a @uncin ca&tc>a necesita la *i*lioteca de imagen AD.
2olamente son o*ligatorios i$gBpat= e i$gBurl.
2i no se suministra N=ordNI la @uncin generar0 una cadena A2CII aleatoria. PodrHa ad%untar su &ro&ia
*i*lioteca de &ala*ras de la -ue di*u%ar aleatoriamente.
2i no se es&eci@ica una ruta a una @uente Crue C,&eI se usar0 la es&antosa @uente nativa de AD.
6a car&eta Nca&tc>aN tiene -ue ser escri*i*le J666 o 777K
e1piration Jen segundosK indica cuanto tiem&o una imagen &ermanecer0 en la car&eta ca&tc>a antes -ue
se la *orre. 1l valor &or de@ecto es dos >oras.
0gregar a una &ase de Fatos
Para -ue la @uncin ca&tc>a evite -ue alguien &ueda enviarI necesitar0 agregar la in@ormacin devuelta &or la
@uncin %reateB%apt%=a+, a la *ase de datos. 6uegoI cuando el usuario envHa los datos del @ormularioI necesitar0
veri@icar -ue los datos e<isten en la *ase de datos , -ue no e<&iraron.
1ste es el &rototi&o de la ta*laG
CREATE TABLE captcha (
captcha_id bigint(13) unsigned NOT NULL auto_increment,
captcha_time int(10) unsigned NOT NULL,
ip_address varchar(16) default '0' NOT NULL,
word varchar(20) NOT NULL,
PRIMARY KEY `captcha_id` (`captcha_id`),
KEY `word` (`word`)
);
1ste es un e%em&lo de uso con una *ase de datos. 1n la &0gina donde se mostrar0 el CAPCC9AI >a*r0 algo como
estoG
$this->load->helper('captcha');
$vals = array(
'img_path' => './captcha/',
'img_url' => 'http://example.com/captcha/'
);
$cap = create_captcha($vals);
$data = array(
'captcha_time' => $cap['time'],
'ip_address' => $this->input->ip_address(),
'word' => $cap['word']
);
$query = $this->db->insert_string('captcha', $data);
$this->db->query($query);
echo 'Submit the word you see below:';
echo $cap['image'];
echo '<input type="text" name="captcha" value="" />';
6uegoI en la &0gina -ue ace&ta el envHoI -ue tendr0 algo como estoG
// Primero, borrar las captchas viejas
$expiration = time()-7200; // Lmite de dos horas
$this->db->query("DELETE FROM captcha WHERE captcha_time < ".$expiration);
// Luego, ver si existe un captcha:
Gua del Usuario de CodeIgniter Versin 2.1.3 279
$sql = "SELECT COUNT(*) AS count FROM captcha WHERE word = ? AND ip_address = ?
AND captcha_time > ?";
$binds = array($_POST['captcha'], $this->input->ip_address(), $expiration);
$query = $this->db->query($sql, $binds);
$row = $query->row();
if ($row->count == 0)
{
echo "Tiene que suministrar la palabra que aparece en la imagen";
}
Gua del Usuario de CodeIgniter Versin 2.1.3 280
.elper CooIie
1l arc>ivo del 9el&er Coo;ie contiene @unciones -ue lo a,udan a tra*a%ar con coo;ies.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('cookie');
1st0n dis&oni*les las siguientes @uncionesG
setB%ooIie+,
1sta @uncin le da al arc>ivo de vista una sinta<is amiga*le &ara con@igurar las coo;ies del navegador. 8e@erirse a la
Clase In&ut &ara o*tener un descri&cin de uso ,a -ue esta @uncin es un alias &ara ?t=is@Ainput@
AsetB%ooIie+,.
getB%ooIie+,
1sta @uncin le da al arc>ivo de vista una sinta<is amiga*le &ara o*tener las coo;ies del navegador. 8e@erirse a la
Clase In&ut &ara o*tener un descri&cin de uso ,a -ue esta @uncin es un alias &ara ?t=is@Ainput@A%ooIie+,.
deleteB%ooIie+,
6e &ermite *orrar una coo;ie. A menos -ue >a,a esta*lecido una ruta &ersonali"ada u otros valoresI slo se
necesita el nom*re de la coo;ieG
delete_cookie("name");
1sta @uncin es idntica a setB%ooIie+,I salvo -ue no tiene los &ar0metros de valor , caducidad. Puede enviar un
arra, de valores en el &rimer &ar0metro o &uede esta*lecer &ar0metros discretos.
delete_cookie($name, $domain, $path, $prefix);
Gua del Usuario de CodeIgniter Versin 2.1.3 281
.elper Fate
1l arc>ivo del 9el&er Date contiene @unciones -ue lo a,udan a tra*a%ar con @ec>as.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('date');
1st0n dis&oni*les las siguientes @uncionesG
noC+,
Devuelve la >ora actual como una marca de tiem&o de 7ni< Jsea la >ora local de su servidor como la A'CK *asada
en el valor Nti$e re#eren%eN del arc>ivo de con@iguracin. 2i no tiene la intencin de esta*lecer su tiem&o de
re@erencia maestro a A'C Jlo -ue normalmente >arHa si e%ecuta un sitio -ue le &ermite a cada usuario esta*lecer la
con@iguracin de su &ro&ia "ona >orariaKI no >a, *ene@icio de usar esta @uncin res&ecto de la @uncin ti$e+, de
P9P.
$date+,
1sta @uncin es idntica a la date+, de P9PI salvo -ue le &ermite usar cdigos de @ec>a de estilo ',2L6I donde
cada letra de cdigo est0 &recedida &or un signo de &orcenta%eG dR dm dd etc.
1l *ene@icio de >acer las @ec>as de esta @orma es -ue no >a, -ue &reocu&arse de esca&ar los caracteres -ue no
son cdigos de @ec>aI como tendrHa -ue >acerlo normalmente con la @uncin date+,. 1%em&loG
$datestring = "Year: %Y Month: %m Day: %d - %h:%i %a";
$time = time();
echo mdate($datestring, $time);
2i no se inclu,e una marca de tiem&o en el segundo &ar0metroI se usar0 la @ec>aO>ora actual.
standardBdate+,
6e &ermite generar una cadena de @ec>a en uno de varios @ormatos estandari"ados. 1%em&loG
$format = 'DATE_RFC822';
$time = time();
echo standard_date($format, $time);
1l &rimer &ar0metro tiene -ue contener el @ormato , el segundo la @ec>a como marca de tiem&o de 7ni<.
$ormatos 2o&ortadosG
Gua del Usuario de CodeIgniter Versin 2.1.3 282
Constante Fes%rip%in EDe$plo
F0!EB0!GH Atom /004(08(14C16G1G0M0000
F0!EBCGGXIE Coo;ies 9CCP DomI 1# Ago /004 16G1G0 7CC
F0!EBI6GV`01 I2)(8601 /004(08(1#C16G1G0M00G00
F0!EBR>CV22 8$C 8// DomI 1# Ago 04 16G1G0 7CC
F0!EBR>CV)0 8$C 840 DomingoI 1#(Ago(04 16G1G0 7CC
F0!EBR>C103` 8$C 106 DomingoI 1#(Ago(04 16G1G0 7CC
F0!EBR>C1123 8$C 11/ DomI 1# Ago /004 16G1G0 7CC
F0!EBR>C2V22 8$C /8// DomI 1# Ago /004 16G1G0 M0000
F0!EBR66 822 DomI 1# Ago /004 16G1G0 7CC
F0!EBW3C Consorcio ?orld ?ide ?e* /004(08(1#C16G1G0M0000
lo%alBtoBg$t+,
Coma como entrada una marca de tiem&o de 7ni< , la devuelve como A'C. 1%em&loG
$now = time();
$gmt = local_to_gmt($now);
g$tBtoBlo%al+,
Coma como entrada una marca de tiem&o de 7ni< J-ue >ace re@erencia a la >ora A'CKI , la convierte a una marca
de tiem&o locali"ada *asada en "ona >oraria , el >orario de verano enviados. 1%em&loG
$timestamp = '1140153693';
$timezone = 'UM8';
$daylight_saving = TRUE;
echo gmt_to_local($timestamp, $timezone, $daylight_saving);
:ota< Para ver la lista de "onas >orariasI va,a al @inal de este ca&Htulo.
$;s4lBtoBuni1+,
Coma una marca de tiem&o de ',2L6 como entrada , la devuelve como de 7ni<. 1%em&loG
$mysql = '20061124092345';
$unix = mysql_to_unix($mysql);
uni1BtoB=u$an+,
Coma una marca de tiem&o de 7ni< como entrada , devuelve un @ormato >umanamente legi*le con este &rototi&oG
YYYY-MM-DD HH:MM:SS AM/PM
Gua del Usuario de CodeIgniter Versin 2.1.3 283
1s :til cuando se necesita mostrar una @ec>a en un cam&o de @ormulario &ara enviarse.
1sta >ora se &uede @ormatear con o sin segundosI , &uede estar en @ormato 1uro&eo o de 1177. 2i se envHa
solamente la marca de tiem&oI devolver0 la >ora sin segundos @ormateados &ara 1177. 1%em&losG
$now = time();
echo unix_to_human($now); // Hora de EEUU sin segundos
echo unix_to_human($now, TRUE, 'us'); // Hora de EEUU con segundos
echo unix_to_human($now, TRUE, 'eu'); // Hora de Europea con segundos
=u$anBtoBuni1+,
6o o&uesto a la @uncin anterior. Coma una >ora N>umanaN como entrada , la devuelve como 7ni<. 1sta @uncin es
:til si ace&ta @ec>as @ormateadas como N>umanasN enviadas desde un @ormulario. Devuelve >076E J*ooleanoK si la
cadena de la @ec>a &asada no est0 @ormateada como se indica m0s arri*a. 1%em&loG
$now = time();
$human = unix_to_human($now);
$unix = human_to_unix($human);
ti$espan+,
$ormatea una marca de tiem&o de 7ni< &ara -ue &are"ca similar a estoG
1 ao, 10 meses, 2 semanas, 5 das, 10 horas, 16 minutos
1l &rimer &ar0metro tiene -ue contener una marca de tiem&o de 7ni<. 1l segundo &ar0metro tiene -ue contener
una marca de tiem&o ma,or -ue la &rimera. 2i el segundo &ar0metro est0 vacHoI se usar0 la >ora actual. 1l
&ro&sito m0s com:n &ara esta @uncin es mostrar cuanto tiem&o &as desde alg:n momento en el &asado >asta
a>ora. 1%em&loG
$post_date = '1079621429';
$now = time();
echo timespan($post_date, $now);
:ota< 1l te<to contenido en el men: est0 en el siguiente arc>ivo de idiomaG
languageEsuBidio$aAdateBlang.p=p.
da;sBinB$ont=+,
Devuelve la cantidad de dHas en un dado mesOa+o. Ciene en cuenta los a+os *isiestos. 1%em&loG
echo days_in_month(06, 2005);
2i el segundo &ar0metro est0 vacHoI se usar0 el a+o actual.
Gua del Usuario de CodeIgniter Versin 2.1.3 284
ti$e8ones+,
Coma una re@erencia de "ona >oraria como entrada J&ara la lista de "onas >orarias v0lidas ver m0s a*a%o
N8e@erencia de Fonas 9orariasNK , devuelve el des@asa%e de >oras res&ecto de 7CC.
echo timezones('UM5');
1sta @uncin es :til al usarse con ti$e8oneB$enu+,.
ti$e8oneB$enu+,
Aenera un men: des&lega*le de "onas >orarias como esteG
1ste men: es :til &ara sitios donde se les &ermite a los usuarios esta*lecer el valor de su "ona >oraria local.
1l &rimer &ar0metro le &ermite esta*lecer el estado &or de@ecto del men:. Por e%em&loI &ara esta*lecer &or de@ecto
la >ora del PacH@ico de*er0 >acer estoG
echo timezone_menu('UM8');
Por @avor lea m0s a*a%o la re@erencia de "onas >orarias &ara conocer los valores de este men:.
1l segundo &ar0metro le &ermite esta*lecer un nom*re de clase C22 &ara el men:.
:ota< 1l te<to contenido en el men: est0 en el siguiente arc>ivo de idiomaG
languageEsuBidio$aAdateBlang.p=p.
Re#eren%ia de donas .orarias
6a siguiente ta*la indica cada "ona >oraria , su u*icacin.
dona
.oraria
U"i%a%in
7'1/ J7CC ( 1/G00K 1nit=eto;I h=a%alien
7'11 J7CC ( 11G00K 3omeI Isla 'id=a,I 2amoa
7'10 J7CC ( 10G00K 9a=aii
7'. J7CC ( .G00K Alas;a
7'8 J7CC ( 8G00K 9ora del PacH@ico
7'7 J7CC ( 7G00K 9ora de la 'onta+a
7'6 J7CC ( 6G00K 9ora del CentroI Ciudad de '<ico
7'4 J7CC ( 4G00K 9ora del 1steI Bogot0I 6imaI Luito
7'# J7CC ( #G00K 9ora del Atl0nticoI CaracasI 6a Pa"
7'/4 J7CC ( G0K 3ueva@oundland
7' J7CC ( G00K BrasilI Buenos AiresI Aeorgeto=nI Islas 'alvinas
7'/ J7CC ( /G00K Atl0ntico 'edioI Isla AscensinI 2anta 9elena
Gua del Usuario de CodeIgniter Versin 2.1.3 285
dona
.oraria
U"i%a%in
7'1 J7CC ( 1G00K Islas A"oresI Islas Ca*o !erde
7CC J7CCK Casa*lancaI Du*linI 1din*urgoI 6ondresI 6is*oaI 'onrovia
7P1 J7CC M 1G00K BerlHnI BrusselasI Co&en>agenI 'adridI ParHsI 8oma
7P/ J7CC M /G00K haliningradoI 2ud0@ricaI !arsovia
7P J7CC M G00K BagdadI 8i>adI 'osc:I 3airo*i
7P/4 J7CC M G0K Ce>er0n
7P# J7CC M #G00K Adu D>a*iI Ba;uI 'uscatI C*ilisi
7P4 J7CC M #G0K ha*ul
7P4 J7CC M 4G00K Islama*adI harac>iI Cas>;ent
7P#4 J7CC M 4G0K Bom*a,I CalcuttaI 'adr0sI 3ueva Del>i
7P6 J7CC M 6G00K Almat,I Colom*aI D>a;a
7P7 J7CC M 7G00K Bang;o;I 9anoiI Da;arta
7P8 J7CC M 8G00K Bei%ingI 9ong hongI Pert>I 2inga&urI Cai&ei
7P. J7CC M .G00K )sa;aI 2a&&oroI 2e:lI Co;ioI Ra;uts;
7P84 J7CC M .G0K AdelaidaI Dar=in
7P10 J7CC M 10G00K 'el*ourneI Pa&ua 3ueva AuineaI 2,dne,I !ladivosto;
7P11 J7CC M 11G00K 'agadanI 3ueva CaledoniaI Islas 2olomon
7P1/ J7CC M 1/G00K Auc;landI ?ellingtonI $i%iI Isla 'ars>all
Gua del Usuario de CodeIgniter Versin 2.1.3 286
.elper Fire%tor;
1l arc>ivo del 9el&er Director, contiene @unciones -ue lo a,udan a tra*a%ar con directorios.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('directory');
1st0n dis&oni*les las siguientes @uncionesG
dire%tor;B$ap+Ldire%torio #uenteL,
1sta @uncin lee la ruta del directorio es&eci@icado en el &rimer &ar0metro , arma un arra, con l , todo su
contenido. 1%em&loG
$map = directory_map('./midirectorio/');
:ota< 6as rutas son casi siem&re relativas al arc>ivo inde1.p=p &rinci&al.
6as su*car&etas contenidas dentro del directorio tam*in se ma&ear0n. 2i desea controlar la &ro@undidad de la
recursinI &uede >acer eso usando el segundo &ar0metro Jun enteroK. 7na &ro@undidad de 1 ma&ear0 solamente
el directorio de nivel su&eriorG
$map = directory_map('./midirectorio/', 1);
Por de@ectoI los arc>ivos ocultos no se incluir0n en el arra, devuelto. Para anular este com&ortamientoI &uede
esta*lecer un tercer &ar0metro a !RUE J*ooleanoKG
$map = directory_map('./midirectorio/', FALSE, TRUE);
Cada nom*re de car&eta ser0 un Hndice del arra,I mientras -ue sus arc>ivos contenidos se inde<ar0n
numricamente. 1ste es un e%em&lo de un arra, tH&icoG
Array
(
[libraries] => Array
(
[0] => benchmark.html
[1] => config.html
[database] => Array
(
[0] => active_record.html
[1] => binds.html
[2] => configuration.html
[3] => connecting.html
[4] => examples.html
[5] => fields.html
[6] => index.html
[7] => queries.html
Gua del Usuario de CodeIgniter Versin 2.1.3 287
)
[2] => email.html
[3] => file_uploading.html
[4] => image_lib.html
[5] => input.html
[6] => language.html
[7] => loader.html
[8] => pagination.html
[9] => uri.html
)
Gua del Usuario de CodeIgniter Versin 2.1.3 288
.elper FoCnload
1l 9el&er Do=nload le &ermite descargar datos a su escritorio.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('download');
1st0n dis&oni*les las siguientes @uncionesG
#or%eBdoCnload+Lno$"reBdeBar%=ivoLJ LdatosL,
Aenera enca*e"ados de servidor -ue @uer"an a -ue los datos se descarguen a su escritorio. Qtil con descargas de
arc>ivos. 1l &rimer &ar0metro es el nom*re -ue -uiere darle al arc>ivo descargadoI el segundo &ar0metro son los
datos del arc>ivo. 1%em&loG
$data = 'Esto es un texto cualquiera';
$name = 'mitexto.txt';
force_download($name, $data);
2i -uiere descargar un arc>ivo e<istente desde el servidorI necesitar0 leer el arc>ivo a una cadenaG
$data = file_get_contents("/path/to/photo.jpg"); // Lee el contenido del archivo
$name = 'myphoto.jpg';
force_download($name, $data);
Gua del Usuario de CodeIgniter Versin 2.1.3 289
.elper E$ail
1l 9el&er 1mail &rovee algunas @unciones -ue lo a,udan a tra*a%ar con emails. Para una solucin de email m0s
ro*ustaI vea la Clase 1mail de CodeIgniter.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('email');
1st0n dis&oni*les las siguientes @uncionesG
validBe$ail+Le$ailL,
!eri@ica si un email es un email correctamente @ormateado. Advierta -ue en realidad no &rue*a -ue el email se
va,a a reci*irI solamente -ue la direccin est0 correctamente @ormada.
Devuelve !RUE>076E
$this->load->helper('email');
if (valid_email('email@somesite.com'))
{
echo 'el email es vlido';
}
else
{
echo 'el email no es vlido';
}
sendBe$ail+LdestinatarioLJ LasuntoLJ L$ensaDeL,U
1nvHa un email usando la @uncin $ail+, nativa de P9P. Para una solucin de email m0s ro*ustaI vea la Clase 1mail
de CodeIgniter.
Gua del Usuario de CodeIgniter Versin 2.1.3 290
.elper >ile
1l arc>ivo del 9el&er $ile contiene @unciones -ue lo a,udan a tra*a%ar con arc>ivos.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('file');
1st0n dis&oni*les las siguientes @uncionesG
readB#ile+LrutaL,
Devuelve los datos contenidos en el arc>ivo es&eci@icado en la ruta. 1%em&loG
$string = read_file('./ruta/al/archivo.php');
6a ruta &uede ser relativa o a*soluta. Devuelve >076E J*ooleanoK en caso de @allar.
:ota< 6a ruta es relativa a su arc>ivo inde1.p=p &rinci&al de su sitioI :G a sus arc>ivos de controladores o
vistas. CodeIgniter usa un controlador @rontalI &or lo -ue las rutas siem&re son relativas al Hndice &rinci&al del
sitio.
2i el servidor est0 e%ecutando una restriccin openB"asedir esta @uncin &uede no @uncionar si 7d est0 tratando
de acceder a un arc>ivo antes de llamar al scri&t.
CriteB#ile+LrutaLJ ?data,
1scri*e los datos al arc>ivo es&eci@icado en la ruta. 2i el arc>ivo no e<isteI la @uncin lo crear0. 1%em&loG
$data = 'Algn dato del archivo';
if ( ! write_file('./ruta/al/archivo.php', $data))
{
echo 'No se puede escribir el archivo';
}
else
{
echo 'Se escribi el archivo!';
}
)&cionalmente se &uede esta*lecer el modo de escritura mediante el tercer &ar0metroG
write_file('./ruta/al/archivo.php', $data, 'r+');
1l modo &or de@ecto es =*. Por @avor ver la AuHa del 7suario de P9P &ara o*tener las o&ciones del modo.
:ota< Para -ue esta @uncin escri*a los datos a un arc>ivo sus &ermisos de arc>ivo tiene -ue estar esta*lecidos
de la @orma -ue se &ueda escri*ir J666I 777I etc.K. 2i el arc>ivo a:n no e<isteI el directorio contenedor tiene -ue
ser escri*i*le.
Gua del Usuario de CodeIgniter Versin 2.1.3 291
:ota< 6a ruta es relativa a su arc>ivo inde1.p=p &rinci&al de su sitioI 3) a sus arc>ivos de controladores o
vistas. CodeIgniter usa un controlador @rontalI &or lo -ue las rutas siem&re son relativas al Hndice &rinci&al del
sitio.
deleteB#iles+LrutaL,
Borra C)D)2 los arc>ivos contenidos en la ruta suministrada. 1%em&loG
delete_files('./ruta/al/directorio/');
2i el segundo &ar0metro se esta*lece a !RUEI tam*in se *orrar0 cual-uier directorio contenido dentro de la ruta
suministrada. 1%em&loG
delete_files('./ruta/al/directorio/', TRUE);
:ota< 6os arc>ivos tienen -ue ser escri*i*les o ser de &ro&iedad del sistema &ara -ue se &uedan *orrar.
getB#ilena$es+Lrutaaldire%torioL,
Coma como entrada una ruta de servidor , devuelve un arra, conteniendo los nom*res de todos los arc>ivos
contenidos en l. 6a ruta de arc>ivo se &uede agregar o&cionalmente a los nom*res de arc>ivos al esta*lecer el
segundo &ar0metro como !RUE.
getBdirB#ileBin#o+Lrutaaldire%torioLJ ?topBlevelBonl; S !RUE,
6ee el directorio es&eci@icado , arma un arra, conteniendo los nom*resI tama+osI @ec>as , &ermisos de los
arc>ivos. 6as su*car&etas contenidas dentro de la ruta es&eci@icada solamente se leen si se lo @uer"a enviando el
segundo &ar0metroI ?topBlevelBonl; en >076EI ,a -ue esta &uede ser una o&eracin intensiva.
getB#ileBin#o+Lrutaalar%=ivoLJ ?#ileBin#or$ation,
Dados un arc>ivo , una rutaI devuelve el nom*reI rutaI tama+oI , @ec>a de modi@icacin. 1l segundo &ar0metro le
&ermite declarar e<&lHcitamente la in@ormacin -ue -uiere devolver. 6as o&ciones sonG nameI serverB&at>I si"eI
dateI reada*leI =rita*leI e<ecuta*leI @ile&erms. Devuelve >076E si no se encuentra el arc>ivo.
:ota< 6a o&cin N=rita*leN usa la @uncin isBCrita"le+, de P9P -ue es conocida &or tener &ro*lemas en el
servidor =e* II2. 1n su lugarI considere usar N@ile&ermsNI -ue devuelve in@ormacin de la @uncin #ileper$s+,
de P9P.
getB$i$eB";Be1tension+L#ileL,
Craduce una e<tensin de arc>ivo a un ti&o mime *asado en %on#ig$i$es.p=p. Devuelve >076E si no se &uede
determinar al ti&oI o a*rir el arc>ivo de con@iguracin mime.
$file = "somefile.png";
echo $file . ' tiene un tipo mime de ' . get_mime_by_extension($file);
Gua del Usuario de CodeIgniter Versin 2.1.3 292
:ota< 1sta no es una @orma e<acta de determinar el ti&o mime del arc>ivoI estando a-uH estrictamente &or
conveniencia. Por cuestiones de seguridadI no se de*erHa usar.
s;$"oli%Bper$issions+?per$s,
Coma &ermisos numricos Jtales como los devueltas &or #ileper$s+, , devuelve la notacin sim*lica est0ndar de
los &ermisos de arc>ivo.
echo symbolic_permissions(fileperms('./index.php')); // -rw-r--r--
o%talBper$issions+?per$s,
Coma &ermisos numricos Jtales como los devueltas &or #ileper$s+, , devuelve la notacin octal de tres
caracteres de los &ermisos de arc>ivo.
echo octal_permissions(fileperms('./index.php')); // 644
Gua del Usuario de CodeIgniter Versin 2.1.3 293
.elper >or$
1l arc>ivo del 9el&er $orm contiene @unciones -ue lo a,udan a tra*a%ar con @ormularios.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('form');
1st0n dis&oni*les las siguientes @uncionesG
#or$Bopen+,
Crea una eti-ueta de a&ertura de @ormulario con una 786 *ase %onstruida a partir de sus pre#eren%ias de
%on#igura%in. )&cionalmente se le &ermitir0 agregar atri*utos de @ormulario , cam&os de entrada ocultosI ,
siem&re se agregar0 el atri*uto a%%ept@%=arset *asado en el valor del con%unto de caracteres en su arc>ivo de
con@iguracin.
1l *ene@icio &rinci&al de usar esta eti-ueta en lugar de codi@icar su &ro&io 9C'6I es -ue le &ermite a su sitio ser
m0s &orta*le si cam*ian las 786s.
A-uH >a, un e%em&lo sim&leG
echo form_open('email/send');
1l e%em&lo anterior crearHa un @ormulario -ue a&unta a su 786 *aseI m0s el segmento de 78I NemailOsendNG
<form method="post" accept-charset="utf-8"
action="http:/example.com/index.php/email/send" />
0gregar 0tri"utos
6os atri*utos se &ueden agregar al &asar un arra, asociativo al segundo &ar0metroG
$attributes = array('class' => 'email', 'id' => 'mi_form');
echo form_open('email/send', $attributes);
1l e%em&lo anterior crearHa un @ormulario similar a estoG
<form method="post" accept-charset="utf-8"
action="http:/example.com/index.php/email/send" class="email" id="mi_form" />
0gregar Ca$pos de Entrada G%ultos
6os cam&os ocultos se &ueden agregar al &asar un arra, asociativo al tercer &ar0metroG
$hidden = array('username' => 'Jose', 'member_id' => '234');
echo form_open('email/send', '', $hidden);
Gua del Usuario de CodeIgniter Versin 2.1.3 294
1l e%em&lo anterior crearHa un @ormulario similar a estoG
<form method="post" accept-charset="utf-8"
action="http:/example.com/index.php/email/send">
<input type="hidden" name="username" value="Jose" />
<input type="hidden" name="member_id" value="234" />
#or$BopenB$ultipart+,
1sta @uncin es a*solutamente idntica a #or$Bopen+, anteriorI e<ce&to -ue agrega un atri*uto multi&art -ue es
necesario si -uisiera usar el @ormulario &ara su*ir arc>ivos.
#or$B=idden+,
6e &ermite generar cam&os de entrada ocultos. Puede &resentar una cadena NnameNONvalueN &ara crear un cam&oG
form_hidden('usuario', 'natalia_natalia');
// Producira:
<input type="hidden" name="usuario" value="natalia_natalia" />
) &uede &resentar un arra, asociativo &ara crear varios cam&osG
$data = array(
'name' => 'Natalia Natalia',
'email' => 'nn@example.com',
'url' => 'http://example.com'
);
echo form_hidden($data);
// Producira:
<input type="hidden" name="name" value="Natalia Natalia" />
<input type="hidden" name="email" value="nn@example.com" />
<input type="hidden" name="url" value="http://example.com" />
#or$Binput+,
6e &ermite generar un cam&o de entrada de te<to est0ndar. 'Hnimamente &uede &asarle el nom*re del cam&o , el
valor en el &rimer , segundo &ar0metrosG
echo form_input('usuario', 'natalia_natalia');
) &uede &asarle un arra, asociativo conteniendo cual-uier dato -ue desee -ue su @ormulario contengaG
$data = array(
'name' => 'usuario',
'id' => 'usuario',
'value' => 'natalia_natalia',
'maxlength' => '100',
'size' => '50',
'style' => 'width:50%',
Gua del Usuario de CodeIgniter Versin 2.1.3 295
);
echo form_input($data);
// Producira:
<input type="text" name="usuario" id="usuario" value="natalia_natalia"
maxlength="100" size="50" style="width:50%" />
2i -uisiera -ue su @ormulario contuviera alg:n dato adicionalI como Davascri&tI &odrHa &as0rselo en una cadena
como tercer &ar0metroG
$js = 'onClick="alguna_funcion()"';
echo form_input('usuario', 'natalia_natalia', $js);
#or$BpassCord+,
1sta @uncin es idntica en todos los as&ectos a la @uncin #or$Binput+, anterior salvo -ue &ermite generar un
ti&o N&ass=ordN.
#or$Bupload+,
1sta @uncin es idntica en todos los as&ectos a la @uncin #or$Binput+, anterior salvo -ue &ermite generar un
ti&o N@ileNI &ermitindole usarla &ara su*ir arc>ivos.
#or$Bte1tarea+,
1sta @uncin es idntica en todos los as&ectos a la @uncin #or$Binput+, anterior salvo -ue &ermite generar un
ti&o Nte<tareaN. :ota< 1n lugar de los atri*utos Nma<lengt>N , Nsi"eN del e%em&lo anteriorI de*er0 esta*lecer Nro=sN
, NcolsN.
#or$BdropdoCn+,
6e &ermite crear un cam&o de lista des&lega*le est0ndar. 1l &rimer &ar0metro contendr0 el nom*re del cam&oI el
segundo &ar0metro contendr0 un arra, asociativo de o&ciones , el tercer &ar0metro contendr0 el valor -ue desee
-ue se seleccione. Cam*in &uede &asarle un arra, de varios elementos mediante el tercer &ar0metro ,
CodeIgniter crear0 un selector m:lti&le. 1%em&loG
$opciones = array(
's' => 'Camisa S',
'm' => 'Camisa M',
'l' => 'Camisa L',
'xl'=> 'Camisa XL',
);
$camisas_en_venta = array('s', 'l');
echo form_dropdown('camisas', $opciones, 'l');
// Producira:
select name="camisas">
<option value="s">Camisa S</option>
<option value="m">Camisa M</option>
<option value="l" selected="selected">Camisa L</option>
Gua del Usuario de CodeIgniter Versin 2.1.3 296
<option value="xl">Camisa XL</option>
</select>
echo form_dropdown('camisas', $opciones, $camisas_en_venta);
// Producira:
<select name="camisas" multiple="multiple">
<option value="s" selected="selected">Camisa S</option>
<option value="m">Camisa M</option>
<option value="l" selected="selected">Camisa L</option>
<option value="xl">Camisa XL</option>
</select>
2i -uisiera -ue la a&ertura Esele%tA contuviera datos adicionalesI como un atri*uto id o Dava2cri&tI &uede &asarle
una cadena como cuarto &ar0metroG
$js = 'id="camisas" onChange="alguna_funcion();"';
echo form_dropdown('camisas', $opciones, 'large', $js);
2i el arra, &asado como ?op%iones es multidimensionalI #or$BdropdoCn+, &roducir0 un EoptgroupA con la
clave del arra, como rtulo.
#or$B$ultisele%t+,
6e &ermite crear un cam&o de seleccin m:lti&le est0ndar. 1l &rimer &ar0metro contendr0 el nom*re del cam&oI el
segundo &ar0metro contendr0 un arra, asociativo de o&cionesI , el tercer &ar0metro contendr0 el valor o valores
-ue desea -ue estn seleccionados. 1l uso de &ar0metros es idntico a usar el anterior #or$BdropdoCn+,I salvo
&or su&uesto -ue el nom*re del cam&o tendr0 -ue usar la sinta<is del arra, 3G6!I &or e%em&lo #ooKM.
#or$B#ieldset+,
6e &ermite generar los cam&os N@ieldsetNONlegendN.
echo form_fieldset('Informacin de la direccin');
echo "<p>contenido del conjunto de campos aqu</p>\n";
echo form_fieldset_close();
// Produce
<fieldset>
<legend>Informacin de la direccin</legend>
<p>contenido del conjunto de campos aqu</p>
</fieldset>
2imilar a otras @uncionesI &uede enviar un arra, asociativo en el segundo &ar0metro si &re@iere esta*lecer atri*utos
adicionales.
$attributes = array('id' => 'address_info', 'class' => 'address_info');
echo form_fieldset('Informacin de la direccin', $attributes);
echo "<p>contenido del conjunto de campos aqu</p>\n";
echo form_fieldset_close();
// Produce
<fieldset id="address_info" class="address_info">
Gua del Usuario de CodeIgniter Versin 2.1.3 297
<legend>Informacin de la direccin</legend>
<p>contenido del conjunto de campos aqu</p>
</fieldset>
#or$B#ieldsetB%lose+,
Produce una eti-ueta E#ieldsetA de cierre. 6a :nica venta%a de usar esta @uncin es -ue le &ermite &asar datos
a ellaI los -ue se agregar0n de*a%o de la eti-ueta. Por e%em&loG
$string = "</div></div>";
echo fieldset_close($string);
// Producira:
</fieldset>
</div></div>
#or$B%=e%I"o1+,
6e &ermite generar un cam&o de casilla de veri@icacin. 1%em&lo sencilloG
echo form_checkbox('newsletter', 'accept', TRUE);
// Producira:
<input type="checkbox" name="newsletter" value="accept" checked="checked" />
1l tercer &ar0metro contiene un *ooleano !RUE>076E &ara determinar si la ca%a se de*erHa marcar o no.
2imilar a las otras @unciones de @ormulario en este >el&erI tam*in &uede &asarle a la @uncin un arra, de
atri*utosG
$data = array(
'name' => 'newsletter',
'id' => 'newsletter',
'value' => 'accept',
'checked' => TRUE,
'style' => 'margin:10px',
);
echo form_checkbox($data);
// Producira:
input type="checkbox" name="newsletter" id="newsletter" value="accept"
checked="checked" style="margin:10px" />
Como con otras @uncionesI si -uisiera -ue la eti-ueta contenga datos adicionalesI como Dava2cri&tI &uede &asarle
una cadena como cuarto &ar0metroG
$js = 'onClick="alguna_funcion()"';
echo form_checkbox('newsletter', 'accept', TRUE, $js)
Gua del Usuario de CodeIgniter Versin 2.1.3 298
#or$Bradio+,
1sta @uncin es idntica en todos los as&ectos a la @uncin #or$B%=e%I"o1+, anteriorI salvo -ue esta*lece un ti&o
NradioN.
#or$Bsu"$it+,
6e &ermite generar un *otn enviar est0ndar. 1%em&lo sencilloG
echo form_submit('mi_submit', 'Enviar mensaje');
// Producira:
<input type="submit" name="mi_submit" value="Enviar mensaje" />
2imilar a otras @uncionesI &uede &asar un arra, asociativo en el &rimer &ar0metro si &re@iere esta*lecer sus &ro&ios
atri*utos. 1l tercer &ar0metro le &ermite agregar datos adicionales al @ormularioI como Dava2cri&t.
#or$Bla"el+,
6e &ermite generar un Ela"elA. 1%em&lo sencilloG
echo form_label('Cual es su nombre?', 'username');
// Producira:
<label for="username">Cual es su nombre?</label>
2imilar a otras @uncionesI &uede &asar un arra, asociativo en el tercer &ar0metro si &re@iere esta*lecer sus &ro&ios
atri*utos.
$attributes = array(
'class' => 'mi_clase',
'style' => 'color: #000;',
);
echo form_label('Cual es su nombre?', 'username', $attributes);
// Producira:
<label for="username" class="mi_clase" style="color: #000;">Cual es su nombre?
</label>
#or$Breset+,
6e &ermite generar un *otn est0ndar de reset. 1l uso es idntico a #or$Bsu"$it+,.
#or$B"utton+,
6e &ermite generar un elemento de *otn est0ndar. 'Hnimamente &uede &asar el nom*re del *otn , contenido en
el &rimer , segundo &ar0metrosG
echo form_button('nombre','contenido');
// Producira
<button name="nombre" type="button">contenido</button>
Gua del Usuario de CodeIgniter Versin 2.1.3 299
) &uede &asarle un arra, asociativo conteniendo cual-uier dato -ue desee -ue su @ormulario contengaG
$data = array(
'name' => 'button',
'id' => 'button',
'value' => 'true',
'type' => 'reset',
'content' => 'Reset'
);
echo form_button($data);
// Producira:
<button name="button" id="button" value="true" type="reset">Reset</button>
2i desea -ue su @ormulario contenga algunos datos adicionalesI como Dava2cri&tI &uede &asarlos como una cadena
en el tercer &ar0metroG
$js = 'onClick="alguna_funcion()"';
echo form_button('mi_boton', 'Clic aqu', $js);
#or$B%lose+,
Produce una eti-ueta E#or$A de cierre. 6a :nica venta%a de usar esta @uncin es -ue le &ermite &asar datos a
ellaI los -ue se agregar0n de*a%o de la eti-ueta. Por e%em&loG
$string = "</div></div>";
echo form_close($string);
// Producira:
</form>
</div></div>
#or$Bprep+,
6e &ermite usar con seguridad 9C'6 , caracteres tales como comillas dentro de elementos de @ormulario sin
rom&er el @ormulario. Considere este e%em&loG
$string = 'Aqu hay una cadena que contiene texto entre "comillas".';
<input type="text" name="mi_formulario" value="$string" />
Como la cadena anterior contiene un con%unto de comillasI ese causar0 -ue el @ormulario se rom&a. 6a @uncin
@ormB&re& convierte 9C'6 &ara -ue se &ueda usar en @orma seguraG
<input type="text" name="mi_formulario"
value="<?php echo form_prep($string); ?>" />
:ota< 2i usa alguna de las @unciones del 9el&er $orm listadas en esta &0gina los valores del @ormulario se
&re&arar0n autom0ticamenteI &or lo -ue no >a, necesidad de llamar a esta @uncin. Qsela solamente si est0
Gua del Usuario de CodeIgniter Versin 2.1.3 300
creando sus &ro&ios elementos de @ormulario.
setBvalue+,
6e &ermite esta*lecer el valor de una entrada de @ormulario o de un te<tarea. Ciene -ue suministrar el nom*re del
cam&o mediante el &rimer &ar0metro de la @uncin. 1l segundo &ar0metro Jo&cionalK le &ermite esta*lecer un valor
&or de@ecto &ara el @ormulario. 1%em&loG
<input type="text" name="cantidad"
value="<?php echo set_value('cantidad', '0'); ?>" size="50" />
1l @ormulario anterior mostrar0 N0N cuando se cargue &or &rimera ve".
setBsele%t+,
2i usa un men: Esele%tAI esta @uncin le &ermite mostrar el elemento de men: -ue se seleccion. 1l &rimer
&ar0metro tiene -ue contener el nom*re del men: selectI el segundo &ar0metro tiene -ue contener el valor de
cada elemento , el tercer &ar0metro Jo&cionalK le &ermite esta*lecer un elemento &or de@ecto Jusar el *ooleano
!RUE>076EK. 1%em&loG
<select name="mi_select">
<option value="uno" <?php echo set_select('mi_select', 'uno', TRUE); ?> >
Uno</option>
<option value="dos" <?php echo set_select('mi_select', 'dos'); ?> >
Dos</option>
<option value="tres" <?php echo set_select('mi_select', 'tres'); ?> >
Tres</option>
</select>
setB%=e%I"o1+,
6e &ermite mostrar una casilla de veri@icacin en el estado en -ue se envi. 1l &rimer &ar0metro tiene -ue
contener el nom*re de la casilla de veri@icacinI el segundo &ar0metro tiene -ue contener su valor , el tercer
&ar0metro Jo&cionalK le &ermite esta*lecer un elemento &or de@ecto Jusar el *ooleano !RUE>076EK. 1%em&loG
<input type="checkbox" name="mi_casilla" value="1"
<?php echo set_checkbox('mi_casilla', '1'); ?> />
<input type="checkbox" name="mi_casilla" value="2"
<?php echo set_checkbox('mi_casilla', '2'); ?> />
setBradio+,
6e &ermite mostrar *otones de radio en el estado en -ue se enviaron. 1sta @uncin es idntica a la @uncin
setB%=e%I"o1+, anterior.
<input type="radio" name="mi_radio" value="1"
<?php echo set_radio('mi_radio', '1', TRUE); ?> />
<input type="radio" name="mi_radio" value="2"
<?php echo set_radio('mi_radio', '2'); ?> />
Gua del Usuario de CodeIgniter Versin 2.1.3 301
.elper .!H7
1l arc>ivo del 9el&er 9C'6 contiene @unciones -ue lo a,udan a tra*a%ar con 9C'6.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('html');
1st0n dis&oni*les las siguientes @uncionesG
"r+,
Aenera eti-uetas de corte de lHnea JE"r AK *asada en el n:mero -ue le suministre. 1%em&loG
echo br(3);
6o anterior &roducirHaG E"r AE"r AE"r A
=eading+,
6e &ermite crear eti-uetas E=1A de 9C'6. 1l &rimer &ar0metro contendr0 el dato , el segundo el tama+o del
enca*e"ado. 1%em&loG
echo heading('Hola!', 3);
6o anterior &roducirHaG E=3A9ola[E=3A
i$g+,
6e &ermite crear eti-uetas Ei$g A de 9C'6. 1l &rimer &ar0metro contiene la ruta de la imagen. 1%em&loG
echo img('images/picture.jpg');
// produce <img src="http://site.com/images/picture.jpg" />
9a, un segundo &ar0metro o&cional -ue es un valor !RUE>076E -ue es&eci@ica si sr% de*erHa tener la &0gina
es&eci@icada &or ?%on#igKLinde1BpageLM agregada a la direccin -ue crea. Presumi*lementeI esto serHa si
estuviera usando un controlador de medios.
echo img('images/picture.jpg', TRUE);
// produce <img src="http://site.com/index.php/images/picture.jpg" alt="" />
AdicionalmenteI se &uede &asar un arra, asociativo a la @uncin i$g+, &ara o*tener control total de todos los
atri*utos , valores. 2i no se &rovee un atri*uto altI CodeIgniter generar0 una cadena vacHa.
$image_properties = array(
'src' => 'images/picture.jpg',
'alt' => 'Yo, demostrando como comer cuatro porciones de pizza de una vez',
'class' => 'post_images',
Gua del Usuario de CodeIgniter Versin 2.1.3 302
'width' => '200',
'height' => '200',
'title' => 'Esa fue una gran noche',
'rel' => 'lightbox',
);
img($image_properties);
// <img src="http://site.com/index.php/images/picture.jpg"
// alt="Yo, demostrando como comer cuatro porciones de pizza de una vez"
// class="post_images" width="200" height="200" title="Esa fue una gran noche"
// rel="lightbox" />
linIBtag+,
6e &ermite crear eti-uetas ElinI A de 9C'6. 1sto es :til &ara enlaces de >o%as de estiloI asH como &ara otros
enlaces. 6os &ar0metros son =re#I con rel o&cionalI t;peI titleI $edia e inde1Bpage. inde1Bpage es un valor
!RUE>076E -ue es&eci@ica si el =re# de*erHa tener la &0gina es&eci@icada &or ?%on#igKLinde1BpageLM
agregada a la direccin -ue crea.
echo link_tag('css/mis_estilos.css');
// produce <link href="http://site.com/css/mis_estilos.css" rel="stylesheet"
// type="text/css" />
)tros e%em&losG
echo link_tag('favicon.ico', 'shortcut icon', 'image/ico');
// <link href="http://site.com/favicon.ico" rel="shortcut icon"
// type="image/ico" />
echo link_tag('feed', 'alternate', 'application/rss+xml', 'My RSS Feed');
// <link href="http://site.com/feed" rel="alternate" type="application/rss+xml"
// title="My RSS Feed" />
AdicionalmenteI se &uede &asar un arra, asociativo a la @uncin linI+, &ara o*tener control total de todos los
atri*utos , valores.
$link = array(
'href' => 'css/printer.css',
'rel' => 'stylesheet',
'type' => 'text/css',
'media' => 'print'
);
echo link_tag($link);
// <link href="http://site.com/css/printer.css" rel="stylesheet" type="text/css"
// media="print" />
Gua del Usuario de CodeIgniter Versin 2.1.3 303
n"s+,
Aenera es&acios sin cortes JTn"spUK *asados en el n:mero suministrado. 1%em&loG
echo nbs(3);
6o anterior &roducirHaG Tn"spUTn"spUTn"spU
ol+, ; ul+,
6e &ermite generar listas ordenadas , sin orden de 9C'6 a &artir de un arra, sim&le o multidimensional. 1%em&loG
$this->load->helper('html');
$list = array(
'red',
'blue',
'green',
'yellow'
);
$attributes = array(
'class' => 'boldlist',
'id' => 'mylist'
);
echo ul($list, $attributes);
1l cdigo anterior &roducir0 estoG
<ul class="boldlist" id="mylist">
<li>red</li>
<li>blue</li>
<li>green</li>
<li>yellow</li>
</ul>
1ste es un e%em&lo m0s com&le%oI usando un arra, multidimensionalG
$this->load->helper('html');
$attributes = array(
'class' => 'boldlist',
'id' => 'mylist'
);
$list = array(
'colors' => array(
'red',
'blue',
'green'
),
'shapes' => array(
'round',
'square',
'circles' => array(
Gua del Usuario de CodeIgniter Versin 2.1.3 304
'ellipse',
'oval',
'sphere'
)
),
'moods' => array(
'happy',
'upset' => array(
'defeated' => array(
'dejected',
'disheartened',
'depressed'
),
'annoyed',
'cross',
'angry'
)
)
);
echo ul($list, $attributes);
1l cdigo anterior &roducir0 estoG
<ul class="boldlist" id="mylist">
<li>colors
<ul>
<li>red</li>
<li>blue</li>
<li>green</li>
</ul>
</li>
<li>shapes
<ul>
<li>round</li>
<li>suare</li>
<li>circles
<ul>
<li>elipse</li>
<li>oval</li>
<li>sphere</li>
</ul>
</li>
</ul>
</li>
<li>moods
<ul>
<li>happy</li>
<li>upset
<ul>
<li>defeated
<ul>
<li>dejected</li>
<li>disheartened</li>
<li>depressed</li>
</ul>
</li>
<li>annoyed</li>
<li>cross</li>
Gua del Usuario de CodeIgniter Versin 2.1.3 305
<li>angry</li>
</ul>
</li>
</ul>
</li>
</ul>
$eta+,
6e a,uda a generar meta tags. A la @uncin le &uede &asar cadenasI arra,s sim&les o multidimensionales.
1%em&losG
echo meta('description', 'Mi bonito sitio');
// Genera: <meta name="description" content="Mi bonito sitio" />
echo meta('Content-type', 'text/html; charset=utf-8', 'equiv');
// Advierta el tercer parmetro. Puede ser "equiv" o "name"
// Genera: <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
echo meta(array('name' => 'robots', 'content' => 'no-cache'));
// Genera: <meta name="robots" content="no-cache" />
$meta = array(
array('name' => 'robots', 'content' => 'no-cache'),
array('name' => 'description', 'content' => 'Mi bonito sitio'),
array('name' => 'keywords', 'content' => 'amor, pasin, intriga,
decepcin'),
array('name' => 'robots', 'content' => 'no-cache'),
array('name' => 'Content-type', 'content' => 'text/html; charset=utf-8',
'type' => 'equiv')
);
echo meta($meta);
// Genera:
// <meta name="robots" content="no-cache" />
// <meta name="description" content="Mi bonito sitio" />
// <meta name="keywords" content="amor, pasin, intriga, decepcin" />
// <meta name="robots" content="no-cache" />
// <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
do%t;pe+,
6e a,uda a generar declaraciones de ti&o de documentoI o DCD. Por de@ecto se usa E9C'6 1.0 2trictI &ero >a,
varios ti&os de documentos dis&oni*les.
echo doctype();
// <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
// "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
echo doctype('html4-trans');
// <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
// "http://www.w3.org/TR/html4/strict.dtd">
6a siguiente es la lista de las o&ciones de doct,&e. 1stas son con@igura*les , se e<traen de
appli%ation%on#igdo%t;pes.p=p.
Gua del Usuario de CodeIgniter Versin 2.1.3 306
Fo%t;pe Gp%in Resultado
E9C'6 1.1 doct,&eJY<>tml11YK
g[D)CCRP1 >tml P7B6IC N(OO?COODCD E9C'6 1.1OO13N
N>tt&GOO===.=.orgOC8O<>tml11ODCDO<>tml11.dtdNj
E9C'6 1.0 2trict doct,&eJY<>tml1(strictYK
g[D)CCRP1 >tml P7B6IC N(OO?COODCD E9C'6 1.0 2trictOO13N
N>tt&GOO===.=.orgOC8O<>tml1ODCDO<>tml1(strict.dtdNj
E9C'6 1.0 Cransitional doct,&eJY<>tml1(transYK
g[D)CCRP1 >tml P7B6IC N(OO?COODCD E9C'6 1.0
CransitionalOO13N N>tt&GOO===.=.orgOC8O<>tml1ODCDO<>tml1(
transitional.dtdNj
E9C'6 1.0 $rameset doct,&eJY<>tml1(@rameYK
g[D)CCRP1 >tml P7B6IC N(OO?COODCD E9C'6 1.0
$ramesetOO13N N>tt&GOO===.=.orgOC8O<>tml1ODCDO<>tml1(
@rameset.dtdNj
9C'6 4 doct,&eJY>tml4YK g[D)CCRP1 >tmlj
9C'6 # 2trict doct,&eJY>tml#(strictYK
g[D)CCRP1 9C'6 P7B6IC N(OO?COODCD 9C'6 #.01OO13N
N>tt&GOO===.=.orgOC8O>tml#Ostrict.dtdNj
9C'6 # Cransitional doct,&eJY>tml#(transYK
g[D)CCRP1 9C'6 P7B6IC N(OO?COODCD 9C'6 #.01
CransitionalOO13N N>tt&GOO===.=.orgOC8O>tml#Oloose.dtdNj
9C'6 # $rameset doct,&eJY>tml#(@rameYK
g[D)CCRP1 9C'6 P7B6IC N(OO?COODCD 9C'6 #.01
$ramesetOO13N N>tt&GOO===.=.orgOC8O>tml#O@rameset.dtdNj
Gua del Usuario de CodeIgniter Versin 2.1.3 307
.elper In#le%tor
1l arc>ivo del 9el&er In@lector contiene @unciones -ue le &ermiten cam*iar las &ala*ras a &luralI singularI camel
caseI etc.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('inflector');
1st0n dis&oni*les las siguientes @uncionesG
singular+,
Cam*ia a singular una &ala*ra en &lural. 1%em&loG
$word = "dogs";
echo singular($word); // Devuelve "dog"
plural+,
Cam*ia a &lural una &ala*ra en singular. 1%em&loG
$word = "dog";
echo plural($word); // Devuelve "dogs"
Para @or"ar a una &ala*ra a -ue termine en NesN use !RUE como segundo argumento.
$word = "pass";
echo plural($word, TRUE); // Devuelve "passes"
%a$eli8e+,
Cam*ia una cadena de &ala*ras se&aradas &or es&acios o guiones de su*ra,ado a camel case. 1%em&loG
$word = "my_dog_spot";
echo camelize($word); // Devuelve "myDogSpot"
unders%ore+,
Cam*ia los es&acios -ue se&aran las &ala*ras &or guiones de su*ra,ado. 1%em&loG
$word = "my dog spot";
echo underscore($word); // Devuelve "my_dog_spot"
Gua del Usuario de CodeIgniter Versin 2.1.3 308
=u$ani8e+,
Cam*ia los guiones de su*ra,ado -ue unen las &ala*ras &or es&acios e inicia cada &ala*ra con ma,:sculas.
1%em&loG
$word = "my_dog_spot";
echo humanize($word); // Devuelve "My Dog Spot"
Gua del Usuario de CodeIgniter Versin 2.1.3 309
.elper 7anguage
1l arc>ivo del 9el&er 6anguage contiene @unciones -ue lo a,udan a tra*a%ar con arc>ivos de idiomas.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('language');
1st0n dis&oni*les las siguientes @uncionesG
lang+Llanguage lineLJ Lele$ent idL,
1sta @uncin devuelve una lHnea de te<to desde un arc>ivo de idioma cargado con una sinta<is sim&li@icada -ue
&uede ser m0s desea*le &ara ver arc>ivos -ue llamar a ?t=is@Alang@Aline+,. 1l segundo &ar0metro o&cional
generar0 tam*in una eti-ueta Ela"elA. 1%em&loG
echo lang('language_=e>', 'form_item_id');
// se convierte en <label for="form_item_id">language_key</label>
Gua del Usuario de CodeIgniter Versin 2.1.3 310
.elper :u$"er
1l arc>ivo del 9el&er 3um*er contiene @unciones -ue lo a,udan a tra*a%ar con datos numricos.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('number');
1st0n dis&oni*les las siguientes @uncionesG
";teB#or$at+,
$ormatea un n:mero como *,tesI *asado en el tama+oI , agrega el su@i%o adecuado. 1%em&losG
echo byte_format(456); // Devuelve 456 Bytes
echo byte_format(4567); // Devuelve 4.5 KB
echo byte_format(45678); // Devuelve 44.6 KB
echo byte_format(456789); // Devuelve 447.8 KB
echo byte_format(3456789); // Devuelve 3.3 MB
echo byte_format(12345678912345); // Devuelve 1.8 GB
echo byte_format(123456789123456789); // Devuelve 11,228.3 TB
7n segundo &ar0metro o&cional le &ermite esta*lecer la &recisin del resultado.
echo byte_format(45678, 2); // Devuelve 44.61 KB
:ota< 1l te<to generado &or esta @uncin est0 en el siguiente arc>ivo de idiomaG
languageEsuBidio$aAnu$"erBlang.p=p.
Gua del Usuario de CodeIgniter Versin 2.1.3 311
.elper 3at=
1l arc>ivo del 9el&er Pat> contiene @unciones -ue le &ermiten tra*a%ar con rutas de arc>ivos en el servidor.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('path');
1st0n dis&oni*les las siguientes @uncionesG
setBrealpat=+,
!eri@ica si la ruta e<iste. 1sta @uncin devolver0 una ruta de servidor sin enlaces sim*licos o estructuras de
directorio relativas. 7n segundo &ar0metro causar0 -ue se dis&are un error si no se &uede resolver la ruta.
$directorio = '/etc/passwd';
echo set_realpath($directorio);
// Devuelve "/etc/passwd"
$directorio_inexistente = '/ruta/a/ninguna_parte';
echo set_realpath($directorio_inexistente, TRUE);
// Devuelve un error, porque no se pudo resolver la ruta
echo set_realpath($directorio_inexistente, FALSE);
// Devuelve "/ruta/a/ninguna_parte"
Gua del Usuario de CodeIgniter Versin 2.1.3 312
.elper 6e%urit;
1l arc>ivo del 9el&er 2ecurit, contiene @unciones relacionadas con la seguridad.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('security');
1st0n dis&oni*les las siguientes @uncionesG
1ssB%lean+,
Provee @iltrado contra &iraterHa de scri&ts de sitio cru"ado. 1sta @uncin es un alias a otra en la Clase In&ut. 2e
&uede encontrar m0s in@ormacin a>H.
saniti8eB#ilena$e+,
Provee &roteccin contra el recorrido de directorios. 1sta @uncin es un alias a otra en la Clase 2ecurit,. 2e &uede
encontrar m0s in@ormacin a>H.
doB=as=+,
6e &ermite crear >as>es 29A1 o 'D4 adecuados &ara encri&tar contrase+as. Crear0 29A1 &or de@ecto. 1%em&losG
$str = do_hash($str); // SHA1
$str = do_hash($str, 'md5'); // MD5
:ota< 1sta @uncin se llama*a anteriormente do=as=+,I la cual se marc como o*soleta en @avor de
doB=as=+,.
stripBi$ageBtags+,
1sta es una @uncin de seguridad -ue -uitar0 las eti-uetas de imagen de una cadena. De%a la 786 de la imagen
como te<to &lano.
$string = strip_image_tags($string);
en%odeBp=pBtags+,
1sta es una @uncin de seguridad -ue convierte eti-uetas P9P a entidades. :ota< 6a @uncin de @iltrado E22 >ace
esto autom0ticamente.
$string = encode_php_tags($string);
Gua del Usuario de CodeIgniter Versin 2.1.3 313
.elper 6$ile;
1l arc>ivo del 9el&er 2mile, contiene @unciones -ue le &ermiten administrar smile,s JemoticonesK.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('smiley');
Introdu%%in
1l 9el&er 2mile, tiene un &rocesador -ue toma smile,s de te<to &lano como G(K , los convierte en im0genes como
Cam*in le &ermite mostrar un con%unto de im0genes de smile, -ue al cli-uearlas se insertar0n en un cam&o de
@ormulario. Por e%em&loI si tiene un *log -ue &ermite comentarios del usuarioI &uede mostrar los smile,s cerca del
@ormulario de comentarios. 6os usuarios &ueden >acer clic so*re un smile, , con la a,uda de alg:n Dava2cri&t se
u*icar0n dentro del cam&o de @ormulario.
!utorial de 6$ile;s Cli4uea"les
A-uH >a, un e%em&lo -ue muestra como tiene -ue crear un con%unto de smile,s cli-uea*les cerca de un cam&o de
@ormulario. 1ste e%em&lo necesita -ue &rimero descargue e instale las im0genes de smile, , luego cree un
controlador , la vista seg:n se descri*e.
I$portante< Antes -ue comienceI &or @avor descargue las im0genes de smile, , &ngalas en un lugar
accesi*le &:*licamente en el servidor. 1ste >el&er asume tam*in -ue 7d tiene un arra, de reem&la"o de
smile,s en appli%ation%on#igs$ile;s.p=p.
El Controlador
1n la car&eta appli%ation%ontrollers cree un arc>ivo llamado s$ile;s.p=p , u*i-ue en l el cdigo -ue est0
m0s a*a%o.
I$portante< Cam*iar la 786 en la @uncin getB%li%Ia"leBs$ile;s+, &ara -ue a&unte a la car&eta s$ile;.
Advertir0 -ue adem0s del 2mile, estamos usando la Clase Ca*le.
class Smileys extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->load->helper('smiley');
$this->load->library('table');
$image_array = get_clickable_smileys('http://example.com/images/smileys/',
Gua del Usuario de CodeIgniter Versin 2.1.3 314
'comments');
$col_array = $this->table->make_columns($image_array, 8);
$data['smiley_table'] = $this->table->generate($col_array);
$this->load->view('smiley_view', $data);
}
}
?>
1n su car&eta appli%ationvieCsI crear un arc>ivo llamado s$ile;BvieC.p=p , u*icar este cdigo en lG
<html>
<head>
<title>Smileys</title>
<?php echo smiley_js(); ?>
</head>
<body>
<form name="blog">
<textarea name="comments" id="comments" cols="40" rows="4"></textarea>
</form>
<p>Hacer clic para insertar un smiley!</p>
<?php echo $smiley_table; ?>
</body>
</html>
Cuando >a,a creado el controlador , la vistaI c0rguelos visitando >tt&GOO===.e<am&le.comOinde<.&>&Osmile,sO
0lias de Ca$po
Al >acer cam*ios en la vista &uede ser inconveniente tener un id de cam&o en el controlador. Para evitar estoI
&uede darle a sus enlaces de smile, un nom*re genrico -ue se vincular0 a un id es&ecH@ico en la vista.
$image_array = get_smiley_links("http://example.com/images/smileys/",
"comment_textarea_alias");
Para ma&ear el alias al id del cam&oI &0selos %untos en la @uncin s$ile;BDs+,G
$image_array = smiley_js("comment_textarea_alias", "comments");
Re#eren%ia de >un%iones
getB%li%Ia"leBs$ile;s+,
Devuelve un arra, -ue contiene las im0genes smile, envueltas en un enlace. Ciene -ue suministrar la 786 a la
car&eta de smile,s , un id de cam&o o un alias de cam&o.
$image_array = get_smiley_links("http://example.com/images/smileys/", "comment");
Gua del Usuario de CodeIgniter Versin 2.1.3 315
:ota< 1l uso de esta @uncin sin el segundo &ar0metro %unto con DsBinsertBs$ile; @ue marcado como
o*soleto.
s$ile;BDs+,
Aenera el Dava2cri&t -ue &ermite -ue las im0genes se &uedan cli-uear e insertar en un cam&o de @ormulario. 2i
suministra un alias en lugar de un id al generar los enlaces del smile,I necesita &asar el alias , el corres&ondiente
id de @ormulario a la @uncin. 1sta @uncin est0 dise+ada &ara u*icarse dentro del 0rea g>eadj de la &0gina =e*.
<?php echo smiley_js(); ?>
:ota< 1sta @uncin reem&la"a a DsBinsertBs$ile;I la -ue @ue marcada como o*soleta.
parseBs$ile;s+,
Coma una cadena de te<to como entrada , reem&la"a cual-uier smile, de te<to &lano con la imagen e-uivalente.
1l &rimer &ar0metro de*e contener la cadenaI el segundo tiene -ue contener la 786 a la car&eta de smile,sG
$str = 'Estos son algunos smileys: :-) ;-)';
$str = parse_smileys($str, "http://example.com/images/smileys/");
echo $str;
Gua del Usuario de CodeIgniter Versin 2.1.3 316
.elper 6tring
1l arc>ivo del 9el&er 2tring contiene @unciones -ue lo a,udan a tra*a%ar con cadenas de caracteres.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('string');
1st0n dis&oni*les las siguientes @uncionesG
rando$Bstring+,
Aenera una cadena aleatoria *asada en el ti&o , longitud es&eci@icadas. Qtil &ara crear contrase+as o generar
>as>es aleatorios.
1l &rimer &ar0metro es&eci@ica el ti&o de cadenaI el segundo &ar0metro es&eci@ica la longitud. 1st0n dis&oni*les las
siguiente alternativasG
al&>aI alunumI numericI no"eroI uni-ueI md4I encr,&t , s>a1
alp=a< 7na cadena con letras ma,:sculas , min:sculas solamente.
alnu$< 7na cadena al@anumrica con caracteres en ma,:sculas , min:sculas.
nu$eri%< 7na cadena numrica.
no8ero< 7na cadena numrica sin ceros.
uni4ue< 7na cadena encri&tada con 'D4 , uni4id+,. :ota< el &ar0metro longitud no est0 dis&oni*le
&ara este ti&o. Devuelve una cadena de / caracteres de longitud J@i%aK.
s=a1< 7n n:mero aleatorio *asado en doB=as=+, del 9el&er 2ecurit,.
1%em&lo de 7soG
echo random_string('alnum', 16);
in%re$entBstring+,
Incrementa una cadena al agregarle un n:mero o incrementando el n:mero. 7til &ara crear Vco&iasW de un arc>ivo
o du&licar el contenido de una *ase de datos -ue tiene ID o tHtulo :nicos.
1%em&lo de usoG
echo increment_string('file', '_'); // "file_1"
echo increment_string('file', '-', 2); // "file-2"
echo increment_string('file-4'); // "file-5"
alternator+,
Permite -ue dos o m0s elementos alternen entre sH al ciclar dentro de un *ucle. 1%em&loG
for ($i = 0; $i < 10; $i++)
{
echo alternator('cadena 1', 'cadena 2');
}
Gua del Usuario de CodeIgniter Versin 2.1.3 317
Puede agregar tantos &ar0metros como -uiera , con cada iteracin del *ucle se devolver0 el siguiente elemento.
for ($i = 0; $i < 10; $i++)
{
echo alternator('uno', 'dos', 'tres', 'cuatro', 'cinco');
}
:ota< Para usar varias llamadas se&aradas a esta @uncin sim&lemente llame la @uncin sin argumentos &ara
reiniciali"ar.
repeater+,
Aenera co&ias re&etidas de los datos a enviar. 1%em&loG
$string = "\n";
echo repeater($string, 30);
6o anterior generarHa 0 nuevas lHneas.
redu%eBdou"leBslas=es+,
Convierte las *arras do*les en una cadena a *arras sim&lesI salvo &ara a-uellas encontradas en >tt&GOO. 1%em&loG
$string = "http://example.com//index.php";
echo reduce_double_slashes($string); // devuelve: "http://example.com/index.php"
tri$Bslas=es+,
Luita las *arras de inicio , @in de una cadena. 1%em&loG
$string = "/esto/aquello/lootro/";
echo trim_slashes($string); // devuelve: esto/aquello/lootro
redu%eB$ultiples+,
8educe m:lti&les instancias de un car0cter &articular -ue ocurren uno detr0s de otro. 1%em&loG
$string = "Batman, Robin,, Gatbela, Batichica";
$string = reduce_multiples($string,",");
//devuelve: "Batman, Robin, Gatbela, Batichica"
6a @uncin ace&ta los siguiente &ar0metrosG
reduce_multiples(string: texto en el que buscar, string: caracter a reducir,
boolean: si quitar el caracter del inicio y fin de la cadena)
1l &rimer &ar0metro contiene la cadena de la -ue -uiere reducir las redundancias. 1l segundo &ar0metro contiene
el caracter -ue -uiere reducir. 1l tercer &ar0metro es >076E &or de@ecto` si se esta*lece a !RUE -uitar0 las
ocurrencias del caracter al inicio , @in de la cadena. 1%em&loG
Gua del Usuario de CodeIgniter Versin 2.1.3 318
$string = ",Batman, Robin,, Gatbela, Batichica,";
$string = reduce_multiples($string, ",", TRUE);
//devuelve: "Batman, Robin, Gatbela, Batichica"
4uotesBtoBentities+,
Convierte las comillas sim&les , do*les en una cadena a las entidades 9C'6 corres&ondientes. 1%em&loG
$string = "Joe's \"dinner\"";
$string = quotes_to_entities($string); //devuelve: "Joe's "dinner""
stripB4uotes+,
Luita las comillas sim&les , do*les de una cadena. 1%em&loG
$string = "Joe's \"dinner\"";
$string = strip_quotes($string); //devuelve: "Joes dinner"
Gua del Usuario de CodeIgniter Versin 2.1.3 319
.elper !e1t
1l arc>ivo del 9el&er Ce<t contiene @unciones -ue lo a,udan a tra*a%ar con te<to.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('text');
1st0n dis&oni*les las siguientes @uncionesG
CordBli$iter+,
Crunca la cadena a la cantidad de &ala*ras es&eci@icada. 1%em&loG
$string = "Esta es una hermosa cadena de texto que tiene once palabras.";
$string = word_limiter($string, 4);
// Devuelve: Esta es una hermosa...
1l tercer &ar0metro es un su@i%o o&cional -ue se agrega a la cadena. Por de@ecto se le agregan &untos sus&ensivos.
%=ara%terBli$iter+,
Crunca la cadena a la cantidad de caracteres es&eci@icada. 'antiene la integridad de las &ala*ras &or lo -ue la
cantidad de caracteres &uede ser ligeramente ma,or o menor a la es&eci@icada. 1%em&loG
$string = "Esta es una hermosa cadena de texto que tiene once palabras.";
$string = character_limiter($string, 20);
// Devuelve: Esta es una hermosa cadena...
1l tercer &ar0metro es un su@i%o o&cional -ue se agrega a la cadena. Por de@ecto se le agregan &untos sus&ensivos.
as%iiBtoBentities+,
Convierte valores A2CII en entidades de caracterI inclu,endo caracteres de '2 ?ord , A2CII alto -ue &ueden
causar &ro*lemas se usan en una &0gina =e* de @orma -ue se &uedan mostrar consistentemente
inde&endientemente de la con@iguracin del navegador o almacenar @ia*lemente en una *ase de datos. 9a, alguna
de&endencia con el con%unto de caracteres del servidorI &or lo -ue &uede no ser 100d con@ia*le en todos los
casosI &ero &ara la ma,or &arte se de*erHan identi@icar correctamente los caracteres @uera del rango normal Jcomo
los caracter acentuadosK. 1%em&loG
$string = ascii_to_entities($string);
Gua del Usuario de CodeIgniter Versin 2.1.3 320
entitiesBtoBas%ii+,
1sta @uncin >ace lo o&uesto a la anterior` cam*ia las entidades de caracter a A2CII.
%onvertBa%%entedB%=ara%ters+,
Cranscri*e caracteres altos de A2CII a sus e-uivalentes *a%os de A2CII. Qtil cuando se necesitan caracteres no
ingleses &ara usarse donde se usan solamente caracteres est0ndar A2CII segurosI &or e%em&loI en 786s.
$string = convert_accented_characters($string)`
1sta @uncin usa el arc>ivo de con@iguracin appli%ation%on#ig#oreignB%=ars.p=p &ara de@inir el arra, de la
transcri&cin.
CordB%ensor+,
6e &ermite censurar &ala*ras dentro de una cadena de te<to. 1l &rimer &ar0metro contendr0 la cadena original. 1l
segundo contendr0 el arra, de &ala*ras a rec>a"ar. 1l tercer &ar0metro &uede contener valores de reem&la"o &ara
las &ala*ras. 2i no se es&eci@icaI se reem&la"an &or signos numeralG mmmm. 1%em&loG
$disallowed = array('damier', 'joraca', 'locu', 'tate');
$string = word_censor($string, $disallowed, 'Beep!');
=ig=lig=tB%ode+,
Colorea una cadena de cdigo JP9PI 9C'6I etc.K. 1%em&loG
$string = highlight_code($string);
1sta @uncin usa la @uncin =ig=lig=tBstring+, de P9PI &or lo -ue los colores usados son los es&eci@icados en el
arc>ivo p=p.ini.
=ig=lig=tBp=rase+,
8esaltar0 una @rase dentro de una cadena de te<to. 1l &rimer &ar0metro contendr0 la cadena original , el segundo
contendr0 la @rase -ue se desea resaltar. 6os &ar0metros tercero , cuarto contendr0n las eti-uetas 9C'6 de
a&ertura , cierre -ue desearHa -ue rodearan a la @rase. 1%em&loG
$string = "Este es un hermoso texto acerca de nada en particular.";
$string = highlight_phrase($string, "hermoso texto",
'<span style="color:#990000">', '</span>');
1l te<to anterior devuelveG
1ste es un >ermoso te<to acerca de nada en &articular.
CordBCrap+,
Introduce saltos de lHnea autom0ticos al te<to &ara la cantidad es&eci@icada de caracteresI mientras mantiene
com&letas las &ala*ras. 1%em&loG
Gua del Usuario de CodeIgniter Versin 2.1.3 321
$string = "Esta es una cadena de texto simple que nos ayudar a ejemplificar esta
funcin.";
echo word_wrap($string, 24);
// Producira:
Esta es una cadena de
texto simple que nos
ayudar a ejemplificar
esta funcin.
ellipsi8e+,
1sta @uncin -uitar0 las eti-uetas de la cadenaI la dividir0 en una longitud m0<ima de@inida , le insertar0 &untos
sus&ensivos.
1l &rimer &ar0metro es la cadena a la cual a&licar la @uncinI el segundo &ar0metro es la cantidad de caracteres en
la cadena @inal. 1l tercer &ar0metro indica donde en la cadena tienen -ue a&arecer los &untos sus&ensivosI de 0 a
1I i"-uierda a derec>a. Por e%em&loG un valor de 1 u*icar0 los &untos sus&ensivos a la derec>a de la cadenaI .4 en
el medio , 0 a la i"-uierda.
7n &ar0metro o&cional es el ti&o de &untos sus&ensivos. Por de@ectoI se insertar0 &untos sus&ensivos JK.
$str = 'esta_cadena_es_demasiado_larga_y_puede_romper_mi_diseo';
echo ellipsize($str, 32, .5);
// Produce:
// esta_cadena_es_de.romper_mi_diseo
Gua del Usuario de CodeIgniter Versin 2.1.3 322
.elper !;pograp=;
1l arc>ivo del 9el&er C,&ogra&>, contiene @unciones -ue lo a,udan a @ormatear te<to de @orma sem0ntica.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('typography');
1st0n dis&oni*les las siguientes @uncionesG
autoBt;pograp=;+,
$ormatea te<to &ara -ue sea 9C'6 sem0ntica , ti&ogr0@icamente correcto. Para ma,or in@ormacinI vea la Clase
C,&ogra&>,.
1%em&lo de 7soG
$string = auto_typography($string);
:ota< 1l @ormateo ti&ogr0@ico &uede usar intensamente al &rocesadorI &articularmente si tiene un montn de
contenido &ara @ormatearse. 2i elige usar esta @uncinI de*erHa considerar cac>ear sus &0ginas.
nl2"rBe1%eptBpre+,
Convierte caracteres de nueva lHnea a eti-uetas E"r A a menos -ue stas a&are"can dentro de eti-uetas EpreA.
1sta @uncin es idntica a la nl2"r+, nativa de P9PI salvo -ue ignora las eti-uetas EpreA.
1%em&lo de 7soG
$string = nl2br_except_pre($string);
Gua del Usuario de CodeIgniter Versin 2.1.3 323
.elper UR7
C>e 9el&er 786 @ile contiene @unciones -ue lo a,udan a tra*a%ar con 786s.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('url');
1st0n dis&oni*les las siguientes @uncionesG
siteBurl+,
Devuelve la 786 del sitioI seg:n se es&eci@ica en el arc>ivo de con@iguracin. 1l arc>ivo inde1.p=p Jo el -ue >a,a
esta*lecido como el inde1Bpage del sitio en el arc>ivo de con@iguracinK se agregar0 a la 786I asH como cual-uier
segmento de 78I -ue &ase a la @uncin.
6o animamos a utili"ar esta @uncin en cual-uier momento -ue usted necesite &ara generar una 786 localI de
@orma -ue las &0ginas se vuelven m0s &orta*les en caso de -ue su 786 cam*ie.
6os segmentos se &uede &asar o&cionalmente a la @uncin como una cadena o un arra,. A-uH >a, un e%em&lo de
cadenaG
echo site_url("news/local/123");
1l e%em&lo anterior devolverHa algo comoG =ttp<e1a$ple.%o$inde1.p=pneCslo%al123.
A-uH >a, un e%em&lo de segmentos &asados como un arra,G
$segments = array('news', 'local', '123');
echo site_url($segments);
"aseBurl+,
Devuelve la 786 *ase del sitioI seg:n se es&eci@ica en el arc>ivo de con@iguracin. 1%em&loG
echo base_url();
%urrentBurl+,
Devuelve la 786 com&leta Jsegmentos incluidosK de la &0gina -ue se est0 viendo en este momento.
uriBstring+,
Devuelve los segmentos 78I de cual-uier &0gina -ue contiene esta @uncin. Por e%em&loI si la 786 @uera estaG
http://some-site.com/blog/comments/123
Gua del Usuario de CodeIgniter Versin 2.1.3 324
6a @uncin devolverHaG
/blog/comments/123
inde1Bpage+,
Devuelve la &0gina Ninde<N del sitioI seg:n se es&eci@ica en el arc>ivo de con@iguracin. 1%em&loG
echo index_page();
an%=or+,
Crea un enlace ancla de 9C'6 est0ndar *asado en la 786 de su sitioG
<a href="http://example.com">Clic aqu</a>
6a eti-ueta tiene tres &ar0metros o&cionalesG
anchor('segmentos uri', 'texto', 'atri!utos')
1l &rimer &ar0metro &uede contener cual-uier segmento -ue desee agregar a la 786. Como con la @uncin
siteBurl+, anteriorI los segmentos &ueden estar en una cadena o un arra,.
:ota< 2i est0 armando enlaces -ue son internos a la a&licacinI no inclu,a la 786 *ase J>tt&GOO...K. 1sto se
agregar0 autom0ticamente desde la in@ormacin es&eci@icada en el arc>ivo de con@iguracin. Incluir solamente
los segmentos de 78I -ue desee agregar a la 786.
1l segundo segmento es el te<to -ue -uerrHa -ue diga el enlace. 2i lo de%a en *lanco se usar0 la misma 786.
1l tercer &ar0metro &uede contener una lista de atri*utos -ue -uisiera agregar al enlace. 6os atri*utos &ueden ser
una cadena sim&le o un arra, asociativo.
A-uH >a, algunos e%em&losG
echo anchor('news/local/123', 'Mis noticias', 'title="Titulares"');
ProducirHaG ga >re@eN>tt&GOOe<am&le.comOinde<.&>&One=sOlocalO1/N titleeNCitularesNj'is noticiasgOaj
echo anchor('news/local/123', 'Mis noticias',
array('title' => 'Buenas noticias!'));
ProducirHaG ga >re@eN>tt&GOOe<am&le.comOinde<.&>&One=sOlocalO1/N titleeNBuenas noticias[Nj'is noticiasgOaj
an%=orBpopup+,
Casi idntica a la @uncin an%=or+, salvo -ue a*re la 786 en una ventana nueva. Puede es&eci@icar atri*utos de
ventana Dava2cri&t en el tercer &ar0metro &ara controlar cmo se a*re la ventana. 2i el tercer &ar0metro no est0
esta*lecidoI sim&lemente a*rir0 una nueva ventana con los valores del navegador. A-uH >a, un e%em&lo con
atri*utosG
Gua del Usuario de CodeIgniter Versin 2.1.3 325
$atts = array(
'width' => '800',
'height' => '600',
'scrollbars' => 'yes',
'status' => 'yes',
'resizable' => 'yes',
'screenx' => '0',
'screeny' => '0'
);
echo anchor_popup('news/local/123', 'Clic aqu!', $atts);
:ota< 6os atri*utos anteriores son los valores &or de@ecto de la @uncinI &or lo -ue solamente necesita esta*lecer
a-uellos -ue son distintos a los -ue necesita. 2i -uiere -ue la @uncin use todos sus valores &or de@ectoI
sim&lemente &0sele un arra, vacHo en el tercer &ar0metroG
echo anchor_popup('news/local/123', 'Clic aqu!', array());
$ailto+,
Crea un enlace de email est0ndar de 9C'6. 1%em&lo de usoG
echo mailto('yo@misitio.com', 'Haga clic aqu para contactarme');
Como con la @uncin an%=or+, anteriorI &uede esta*lecer los atri*utos usando el tercer &ar0metro.
sa#eB$ailto+,
1s idntica a la @uncin anteriorI salvo -ue escri*e una versin o@uscada de la eti-ueta $ailto usando n:meros
ordinales escritos con Dava2cri&t &ara a,udar a evitar -ue la direccin de email sea recolectada &or *ots de s&am.
autoBlinI+,
Convierte autom0ticamente 786s , direcciones de email contenidas en cadenas en enlaces. 1%em&loG
$string = auto_link($string);
1l segundo &ar0metro determina si las 786s o emails se convierten am*osI uno o el otro. Por de@ecto el &ar0metro
es am*os J"ot=K si no se es&eci@ica nada. 6os enlaces de email se codi@ican usando sa#eB$ailto+, como se
muestra antes.
Convierte solo 786sG
$string = auto_link($string, 'url');
Convierte solo direcciones de emailG
$string = auto_link($string, 'email');
1l tercer &ar0metro determina si los enlaces se muestran en una ventana nueva. 1l valor &uede ser !RUE o
>076E J*ooleanoKG
Gua del Usuario de CodeIgniter Versin 2.1.3 326
$string = auto_link($string, 'both', TRUE);
urlBtitle+,
Coma como entrada una cadena de caracteres , crea una cadena de 786 >umanamente legi*le. 1sto es :til siI &or
e%em&loI si 7d tiene un *log en el -ue le gustarHa usar el tHtulo de sus entradas como 786. 1%em&loG
$title = "Que est mal en el CSS?";
$url_title = url_title($title);
// Produce: Que-est-mal-en-el-CSS
1l segundo &ar0metro determina el delimitador de &ala*ra. Por de@ecto se usa el guin Jdas=K. 6as o&ciones sonG
das=I o unders%oreG
$title = "Que est mal en el CSS?";
$url_title = url_title($title, 'underscore');
// Produce: Que_est_mal_en_el_CSS
1l tercer &ar0metro determina si se @uer"a o no &or los caracteres en min:sculas. Por de@ecto no. 6as o&ciones son
!RUE>076E *ooleanosG
$title = "Que est mal en el CSS?";
$url_title = url_title($title, 'underscore', TRUE);
// Produce: que_est_mal_en_el_css
prepBurl+,
1sta @uncin agregar0 =ttp< en caso -ue @alte un es-uema en la 786. Pase la cadena de 786 a la @uncin de
este modoG
$url = "example.com";
$url = prep_url($url);
redire%t+,
9ace una Nredireccin de enca*e"adoN a la 78I es&eci@icada. 2i es&eci@ica la 786 com&leta del sitioI se armar0 ese
enlace Pero &ara enlaces localesI sim&lemente &roveer los segmentos 78I al controlador -ue -uiere direccionar
&ara crear el enlace. 6a @uncin armar0 la 786 *as0ndose en los valores del arc>ivo de con@iguracin.
1l segundo &ar0metro o&cional le &ermite elegir entre el mtodo lo%ation J&or de@ectoK o re#res=. 7o%ation es
m0s r0&idoI &ero a veces &uede causar &ro*lemas en servidores ?indo=s. 1l tercer &ar0metro o&cional le &ermite
enviar un cdigo de res&uesta 9CCP es&ecH@ico \ esto se &odrHa usar &or e%em&lo &ara crear redirecciones 01 &ara
los motores de *:s-ueda. 1l cdigo de res&uesta &or de@ecto es 0/. 1l tercer &ar0metro solo est0 dis&oni*le &ara
redirecciones lo%ation , no &ara re#res=. 1%em&losG
Gua del Usuario de CodeIgniter Versin 2.1.3 327
if ($logged_in == FALSE)
{
redirect('/login/form/', 'refresh');
}
// with 301 redirect
redirect('/article/13', 'location', 301);
:ota< Para -ue la @uncin tra*a%e tiene -ue usarse antes -ue algo salga &or el navegadorI ,a -ue utili"a
enca*e"ados de servidor.
:ota< Para un control mu, @ino so*re los enca*e"adosI de*erHa usar la @uncin setB=eader+, de la Clase
)ut&ut.
Gua del Usuario de CodeIgniter Versin 2.1.3 328
.elper YH7
1l arc>ivo del 9el&er E'6 @ile contiene @unciones -ue lo a,udan a tra*a%ar con datos E'6.
Cargar este .elper
1ste >el&er se carga usando el siguiente cdigoG
$this->load->helper('xml');
1st0n dis&oni*les las siguientes @uncionesG
1$lB%onvert+LstringL,
Coma una cadena como entrada , convierte los siguientes caracteres E'6 reservados a entidadesG
Am&ersandsG n
Caracteres menor -ue , ma,or -ueG g j
Comillas sim&les , do*lesG Y N
AuionesG (
1sta @uncin ignora los signos n si son &arte de entidades de caracter e<istentes. 1%em&loG
$string = xml_convert($string);
Gua del Usuario de CodeIgniter Versin 2.1.3 329
0ne1os
Gua del Usuario de CodeIgniter Versin 2.1.3 330
0ne1o I< 0%tuali8ar desde una Versin 0nterior
Por @avor lea las notas de actuali"acin corres&ondientes a la versin desde la -ue est0 actuali"ando.
0%tuali8ando de 2.1.2 a 2.1.3
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&la"ar todos los arc>ivos , directorios en su car&eta s;ste$ , reem&la"ar su arc>ivo inde1.p=p. 2i reali"
modi@icaciones en su arc>ivo inde1.p=p tendr0n -ue >acerse nuevamente en este.
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
0%tuali8ando de 2.1.1 a 2.1.2
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&la"ar todos los arc>ivos , directorios en su car&eta s;ste$ , reem&la"ar su arc>ivo inde1.p=p. 2i reali"
modi@icaciones en su arc>ivo inde1.p=p tendr0n -ue >acerse nuevamente en este.
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
0%tuali8ando de 2.1.0 a 2.1.1
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&la"ar todos los arc>ivos , directorios en su car&eta s;ste$ , reem&la"ar su arc>ivo inde1.p=p. 2i reali"
modi@icaciones en su arc>ivo inde1.p=p tendr0n -ue >acerse nuevamente en este.
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
6tep 2< Repla%e %on#ig$i$es.p=p
2e actuali" este arc>ivo de con@iguracin &ara -ue contenga m0s ti&os mime del usuario. Por @avor c&ieloI a
appli%ation%on#ig$i$es.p=p.
6tep 3< 0%tuali8ar sus ta"las de dire%%iones I3
1sta actuali"acin agrega so&orte &ara direcciones IP IPv6. Para almacenarlasI se necesita agrandar las columnas
ipBaddress a #4 caracteres. Por e%em&loI la ta*la sesones de CodeIgniter necesitar0 cam*iar aG
Gua del Usuario de CodeIgniter Versin 2.1.3 331
ALTER TABLE ci_sessions CHANGE ip_address ip_address varchar(45) default '0' NOT
NULL
0%tuali8ar de 2.0.3 a 2.1.0
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&la"ar todos los arc>ivos , directorios en su car&eta s;ste$ , reem&la"ar su arc>ivo inde1.p=p. 2i reali"
modi@icaciones en su arc>ivo inde1.p=p tendr0n -ue >acerse nuevamente en este.
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< Ree$pla8ar %on#iguserBagents.p=p
2e actuali" este arc>ivo de con@iguracin &ara -ue contenga m0s ti&os de agentes de usuario. Por @avor c&ielo a
appli%ation%on#iguserBagents.p=p.
0%tuali8ar de 2.0.2 a 2.0.3
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&la"ar todos los arc>ivos , directorios en su car&eta s;ste$ , reem&la"ar su arc>ivo inde1.p=p. 2i reali"
modi@icaciones en su arc>ivo inde1.p=p tendr0n -ue >acerse nuevamente en este.
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0%tuali8ar los ar%=ivos de CodeIgniter
8eem&la"ar todos los arc>ivos , directorios en su car&eta s;ste$ con las nuevas versiones.
3aso 3< 0%tuali8ar su ar%=ivo inde1.p=p prin%ipal
2i est0 e%ecutando un arc>ivo inde1.p=p originalI sim&lemente reem&lace su versin con la nueva.
2i su arc>ivo inde1.p=p tiene modi@icaciones internasI &or @avor agregue sus modi@icaciones al nuevo arc>ivo ,
:selo.
3aso -< Ree$pla8ar %on#iguserBagents.p=p
2e actuali" este arc>ivo de con@iguracin &ara -ue contenga m0s ti&os de agentes de usuario. Por @avor c&ielo a
appli%ation%on#iguserBagents.p=p.
Gua del Usuario de CodeIgniter Versin 2.1.3 332
3aso )< Ca$"iar las re#eren%ias de la %onstante EY! a P.p=pP
:ota< 6a constante 1EC se marc como o*soletaI &ero no se elimin de la a&licacin. 6e recomendamos -ue
>aga los cam*ios tan &ronto como sea &osi*le.
3aso `< Eli$ine 03330!..Lt=irdBpart;L de autoload.p=p
A*rir appli%ationautoload.p=p , *uscar lo siguienteG
$autoload['packages'] = array(APPPATH.'third_party');
2i no eligi cargar ning:n &a-uete adicionalI esa lHnea se &uede cam*iar a G
$autoload['packages'] = array();
6o -ue de*erHa &ro&orcionar una ganancia en el rendimiento nominal si no >a, carga autom0tica de &a-uetes.
0%tuali8ar las !a"las de 6esiones de la &ase de Fatos
2i est0 usando sesiones de *ase de datos con la Bi*lioteca 2ession de CodeIgniterI &or @avor actualice su ta*la
ciBsessiones de la *ase de datos como se muestra a continuacinG
CREATE INDEX last_activity_idx ON ci_sessions(last_activity);
ALTER TABLE ci_sessions MODIFY user_agent VARCHAR(120);
0%tuali8ar de 2.0.1 a 2.0.2
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&la"ar todos los arc>ivos , directorios en su car&eta s;ste$ , reem&la"ar su arc>ivo inde1.p=p. 2i reali"
modi@icaciones en su arc>ivo inde1.p=p tendr0n -ue >acerse nuevamente en este.
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< Eli$inar las lla$adas de %arga de la &i"liote%a 6e%urit;
2e movi 2ecurit, al n:cleo , a>ora se carga autom0ticamente. Asegurarse de -uitar cual-uier llamada &ara
cargarI ,a -ue dar0 lugar a errores de P9P.
3aso 3< Hover HQB6e%urit;
2i est0 anulando o e<tendiendo la Bi*lioteca 2ecurit,I necesitar0 moverla a appli%ation%ore.
0%tuali8ar de 2.0.0 a 2.0.1
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
Gua del Usuario de CodeIgniter Versin 2.1.3 333
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace todos los arc>ivos , directorios en su car&eta s;ste$ , reem&lace su arc>ivo inde1.p=p. 2i se
>icieron modi@icaciones a su inde1.p=pI ellas se de*er0n >acer otra ve" en la nueva versin.
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< Ree$pla8ar %on#ig$i$es.p=p
1ste arc>ivo de con@iguracin se actuali" &ara contener m0s ti&os mimeI &or @avor co&iarlo a
appli%ation%on#ig$i$es.p=p.
3aso 3< Veri#i%ar si =a; #or$ularios 4ue envan al %ontrolador por de#e%to
1l com&ortamiento &or de@ecto &ara #or$Bopen+, cuando se lo llama*a sin &ar0metros solHa ser el envHo al
controlador &or de@ectoI &ero a>ora de%ar0 una accin vacHa JactioneNNK signi@icando -ue el @ormulario ser0 enviado
a la 786 actual. 2i el envHo al controlador &or de@ecto @ue el com&ortamiento es&eradoI se necesitar0 cam*iarlo deG
echo form_open(); //<form action="" method="post" accept-charset="utf-8">
a usar "aseBurl+,G
echo form_open('/'); //<form action="http://example.com/index.php/" method="post"
accept-charset="utf-8">
echo form_open(base_url()); //<form action="http://example.com/" method="post"
accept-charset="utf-8">
0%tuali8ar de 1./.2 a 2.0.0
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace todos los arc>ivos , directorios en su car&eta s;ste$ e1%epto su car&eta appli%ation.
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0Dustar getBdirB#ileBin#o+, donde sea ne%esario
6a versin /.0.0 trae un cam*io no com&ati*le &ara getBdirB#ileBin#o+, en el 9el&er $ile. 6os cam*ios no
com&ati*les son e<tremadamente raros en CodeIgniterI &ero ste sentimos esta*a %usti@icado de*ido a lo @0cil -ue
era crear graves &ro*lemas de rendimiento del servidor. 2i necesita recursividad donde est0 usando esta @uncin
>el&erI cam*ie tales instancias esta*leciendo el segundo &ar0metroI ?topBlevelBonl; a >076EG
get_dir_file_info('/ruta/al/directorio', ?@AB.);
3aso 3< Convertir sus 3lugins en .elpers
CodeIgniter /.0.0 se des>ace del sistema de NPluginN ,a -ue su @uncionalidad es idntica a la de los 9el&ersI &ero
no e<tensi*le. 3ecesitar0 renom*rar su arc>ivo de &lugin de #ilena$eBpi.p=p a #ilena$eB=elper.p=pI
Gua del Usuario de CodeIgniter Versin 2.1.3 334
moverlos a su car&eta =elpers , cam*iar todas las instancias deG
$this->load->plugin('foo');
aG
$this->load->helper('foo');
3aso -< 0%tuali8ar datos en%riptados al$a%enados
:ota< 2i la a&licacin no utili"a la *i*lioteca de ci@radoI no almacena los datos encri&tados de @orma
&ermanenteI o est0 en un entorno -ue no admite 'cr,&tI &uede omitir este &aso.
6a *i*lioteca 1ncr,&t tuvo una cantidad de me%orasI algunas &ara la @ortale"a de la encri&tacin , otras &ara el
rendimientoI lo -ue tiene la inevita*le consecuencia de no &ermitir m0s decodi@icar datos encri&tados con la
versin original de esta *i*lioteca. Para a,udar con la transicinI se agreg un nuevo mtodoI
en%odeB#ro$Blega%;+, -ue decodi@icar0 los datos con el algoritmo original , devolver0 una cadena recodi@icada
usando los mtodos me%orados. 1sto le &ermitir0 reem&la"ar @0cilmente datos encri&tados vie%os con datos
encri&tados nuevos en su a&licacinI sea tanto al vuelo como en masa.
Por @avor leer cmo usar este mtodo en la documentacin de la *i*lioteca 1ncr,&t.
3aso )< Eli$inar las lla$adas de %arga para el =elper de %o$pati"ilidad
1l >el&er de com&ati*ilidad se elimin del n:cleo de CodeIgniter. Codos los mtodos en l de*erHan estar
nativamente dis&oni*les en las versiones so&ortadas de P9P.
3aso `< 0%tuali8ar la e1tensin de %lases
A>ora todas las clases del n:cleo est0n &re@i%as con CIB. Actualice los 'odelos , Controladores &ara e<tender
CIBHodel , CIBControllerI res&ectivamente.
3aso /< 0%tuali8ar las lla$adas al Constru%tor 3adre
Codas las clases nativas de CodeIgniter usan a>ora la convencin BB%onstru%t+, de P9P 4. Por @avor actualice las
*i*liotecas e<tendidas &ara llamar a parent<<BB%onstru%t+,.
3aso V< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1./.1 a 1./.2
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
s;ste$%odeigniter
s;ste$data"ase
s;ste$=elpers
Gua del Usuario de CodeIgniter Versin 2.1.3 335
s;ste$language
s;ste$li"raries
inde1.p=p
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< Eli$inar =eader+, de la plantilla del error -0-
2i est0 usando =eader+, en su &lantilla del error #0#I tal como el caso con la &lantilla errorB-0-.p=p &or de@ecto
mostrada a*a%oI -uite esa lHnea de cdigo.
<?php header("HTTP/1.1 404 Not Found"); ?>
A>ora los enca*e"ados de estado #0# se mane%an adecuadamente en el mtodo s=oCB-0-+,.
3aso 3< Con#ir$ar su s;ste$Bpat=
2i actuali" el arc>ivo inde1.p=pI con@irme -ue la varia*le ?s;ste$Bpat= est0 esta*lecida a la car&eta del
sistema de su a&licacin.
3aso -< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1./.0 a 1./.1
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
s;ste$%odeigniter
s;ste$data"ase
s;ste$=elpers
s;ste$language
s;ste$li"raries
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.`.3 a 1./.0
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
Gua del Usuario de CodeIgniter Versin 2.1.3 336
s;ste$%odeigniter
s;ste$data"ase
s;ste$=elpers
s;ste$language
s;ste$li"raries
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0%tuali8ar su !a"la de 6esiones
2i est0 usando la clase 2ession en su a&licacinI R si est0 almacenando datos de sesin en la *ase de datosI tiene
-ue agregar una nueva columna llamada userBdata a su ta*la de sesiones. A-uH est0 en e%em&lo de lo cmo se
verHa esta columna en ',2L6G
user_data text NOT NULL
Para agregar esta columnaI e%ecutar0 una consulta similar a estaG
ALTER TABLE `ci_sessions` ADD `user_data` text NOT NULL
1ncontrar0 m0s in@ormacin acerca de la nueva @uncionalidad de sesiones en la &0gina de la clase 2ession.
3aso 3< 0%tuali8ar su 6inta1is de Valida%in
1ste es un &aso op%ional &ero recomendado &ara gente -ue usa actualmente la clase !alidation. CI 1.7 introduce
una nueva clase de !alidacin de $ormulariosI -ue reem&la"a a la antigua *i*lioteca de !alidacin. De%amos la
versin vie%a &ara -ue las a&licaciones e<istentes -ue la usan no se rom&anI &ero lo animamos a migrar a la nueva
versin tan &ronto como sea &osi*le. Por @avorI lea las instrucciones cuidadosamente ,a -ue la nueva *i*lioteca
@unciona un &oco di@erenteI , tiene varias caracterHsticas nuevas.
3aso -< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.`.2 a 1.`.3
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
s;ste$%odeigniter
s;ste$data"ase
s;ste$=elpers
s;ste$language
s;ste$li"raries
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
Gua del Usuario de CodeIgniter Versin 2.1.3 337
3aso 2< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.`.1 a 1.`.2
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
s;ste$%odeigniter
s;ste$data"ase
s;ste$=elpers
s;ste$language
s;ste$li"raries
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< Clave de En%ripta%in
2i est0 usando sesionesI a*ra appli%ation%on#ig%on#ig.p=p , veri@i-ue -ue esta*leci una clave de
encri&tacin.
3aso 3< 0r%=ivo Constants
Co&iar appli%ation%on#ig%onstants.p=p a su instalacin , modi@icarlo si es necesario.
3aso -< 0r%=ivo Hi$es
8eem&la"ar appli%ation%on#ig$i$es.p=p con la versin descargada. 2i agreg ti&os mime &ersonali"adosI
de*er0 volver a agregarlos.
3aso )< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.`.0 a 1.`.1
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
s;ste$%odeigniter
s;ste$data"ase
s;ste$=elpers
s;ste$language
s;ste$li"raries
Gua del Usuario de CodeIgniter Versin 2.1.3 338
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.).- a 1.`.0
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
s;ste$%odeigniter
s;ste$data"ase
s;ste$=elpers
s;ste$li"raries
s;ste$plugins
s;ste$language
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0gregar ti$eBtoBupdate a su %on#ig.p=p
Agregar lo siguiente a appli%ation%on#ig%on#ig.p=p con otras o&ciones de con@iguracin de sesinG
$config['sess_time_to_update'] = 300;
3aso 3< 0gregar ?autoloadKL$odelLM
Agregar lo siguiente a appli%ation%on#igautoload.p=pG
/*
| -------------------------------------------------------------------
| Auto-load Model files
| -------------------------------------------------------------------
| Prototype:
|
| $autoload['model'] = array('my_model');
|
*/
$autoload['model'] = array();
3aso -< 0gregar a su data"ase.p=p
9acer los siguientes cam*ios a su arc>ivo appli%ation%on#igdata"ase.p=pG
Agregar la siguiente varia*le antes de las o&ciones de con@iguracin de la *ase de datosI con ?a%tiveBgroup
aactiveBrecord e C871`
Gua del Usuario de CodeIgniter Versin 2.1.3 339
Luitar lo siguiente de las o&ciones de con@iguracin de la *ase de datosG
$db['default']['active_r'] = TRUE;
Agregar lo siguiente a las o&ciones de con@iguracin de la *ase de datosG
$db['default']['char_set'] = "utf8";
$db['default']['dbcollat'] = "utf8_general_ci";
3aso )< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.).3 a 1.).-
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
appli%ation%on#ig$i$es.p=p
s;ste$%odeigniter
s;ste$data"ase
s;ste$=elpers
s;ste$li"raries
s;ste$plugins
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0gregar el %onDunto de %ara%teres a su %on#ig.p=p
Agregar lo siguiente a appli%ation%on#ig%on#ig.p=pG
/*
|--------------------------------------------------------------------------
| Default Character Set
|--------------------------------------------------------------------------
|
| Esto determina que conjunto de caracteres se usa por defecto en varios
| mtodos que necesitan que se provea un conjunto de caracteres.
|
*/
$config['charset'] = "UTF-8";
3aso 3< Carga auto$'ti%a de ar%=ivos de idio$as
2i -uiere cargar cual-uier arc>ivo de idioma autom0ticamenteI agregue esta lHnea a
appli%ation%on#igautoload.p=p<
$autoload['language'] = array();
Gua del Usuario de CodeIgniter Versin 2.1.3 340
3aso -< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.).2 a 1.).3
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
s;ste$data"asedrivers
s;ste$=elpers
s;ste$li"rariesInput.p=p
s;ste$li"raries7oader.p=p
s;ste$li"raries3ro#iler.p=p
s;ste$li"raries!a"le.p=p
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.).0 a 1.).2
:ota< 6as instrucciones en esta &0gina asumen -ue est0 e%ecutando la versin 1.4.0 o 1.4.1. 2i no actuali" a
esa versinI >0galo &rimero.
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
s;ste$=elpersdoCnloadB=elper.p=p
s;ste$=elpers#or$B=elper.p=p
s;ste$li"raries!a"le.p=p
s;ste$li"rariesUserBagent.p=p
s;ste$li"rariesE1%eptions.p=p
s;ste$li"rariesInput.p=p
s;ste$li"rariesRouter.p=p
s;ste$li"raries7oader.p=p
s;ste$li"rariesI$ageBli".p=p
s;ste$languageenglis=unitBtestBlang.p=p
s;ste$data"aseF&Ba%tiveBre%.p=p
s;ste$data"asedrivers$;s4li$;s4liBdriver.p=p
%odeigniter
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
Gua del Usuario de CodeIgniter Versin 2.1.3 341
3aso 2< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.-.1 a 1.).0
:ota< 6as instrucciones en esta &0gina asumen -ue 7d est0 e%ecutando la versin 1.#.1. 2i no actuali" a esta
versinI >0galo &rimero.
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
appli%ation%on#iguserBagents.p=p Jarc>ivo nuevo &ara 1.4K
appli%ation%on#igs$ile;s.p=p Jarc>ivo nuevo &ara 1.4K
%odeigniter
data"ase Jcar&eta nueva &ara 1.4. 8eem&la"a a la car&eta NdriversNK
=elpers
language
li"raries
s%a##olding
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0%tuali8ar su ar%=ivo data"ase.p=p
A*ra su arc>ivo appli%ation%on#igdata"ase.p=p , agregue estos Htems nuevosG
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
3aso 3< 0%tuali8ar su ar%=ivo %on#ig.p=p
A*ra su arc>ivo appli%ation%on#ig%on#ig.p=p , agregue estos nuevos HtemsG
/*
|--------------------------------------------------------------------------
| Class Extension Prefix
|--------------------------------------------------------------------------
|
| Este tem le permite establecer el prefijo nombre de archivo/nombre de clase
| al extender bibliotecas nativas. Para ms informacin lea la gua del usuario:
|
| http://codeigniter.com/user_guide/general/core_classes.html
| http://codeigniter.com/user_guide/general/creating_libraries.html
|
*/
$config['subclass_prefix'] = 'MY_';
Gua del Usuario de CodeIgniter Versin 2.1.3 342
/*
|--------------------------------------------------------------------------
| Rewrite PHP Short Tags
|--------------------------------------------------------------------------
|
| Si su aplicacin PHP no tiene habilitado el soporte para etiquetas cortas, CI
| puede sobrescribir las etiquetas al vuelo, permitindole usar la sintaxis
| en sus archivos de vista. Las opciones son TRUE o FALSE (booleanos)
|
*/
$config['rewrite_short_tags'] = FALSE;
1n el mismo arc>ivo 4uite este HtemG
/*
|--------------------------------------------------------------------------
| Enable/Disable Error Logging
|--------------------------------------------------------------------------
|
| Si le gustara que los mensajes de depuracin o error se registren, establezca
| esta variable a TRUE (booleano). Nota: Tiene que establecer los permisos de
| archivo en la carpeta "logs" de tal forma que se pueda escribir.
|
*/
$config['log_errors'] = FALSE;
1l registro de errores a>ora est0 des>a*ilitado sim&lemente @i%ando el um*ral a cero.
3aso -< 0%tuali8ar su ar%=ivo inde1.p=p prin%ipal
2i est0 e%ecutando un arc>ivo inde1.p=p originalI sim&lemente reem&lace su versin con la nueva.
2i su arc>ivo inde1.p=p tiene modi@icaciones internasI &or @avor agregue sus modi@icaciones al nuevo arc>ivo ,
:selo.
3aso )< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.-.0 a 1.-.1
:ota< 6as instrucciones en esta &0gina asumen -ue 7d est0 e%ecutando la versin 1.#.0. 2i no actuali" a esta
versinI >0galo &rimero.
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
%odeigniter
drivers
=elpers
Gua del Usuario de CodeIgniter Versin 2.1.3 343
li"raries
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0%tuali8ar su ar%=ivo %on#ig.p=p
A*ra su arc>ivo appli%ation%on#ig%on#ig.p=p , agregue estos nuevos HtemsG
/*
|--------------------------------------------------------------------------
| Output Compression
|--------------------------------------------------------------------------
|
| Enables Gzip output compression for faster page loads. When enabled,
| the output class will test whether your server supports Gzip.
| Even if it does, however, not all browsers support compression
| so enable only if you are reasonably sure your visitors can handle it.
|
| VERY IMPORTANT: If you are getting a blank page when compression is enabled it
| means you are prematurely outputting something to your browser. It could
| even be a line of whitespace at the end of one of your scripts. For
| compression to work, nothing can be sent before the output buffer is called
| by the output class. Do not "echo" any values with compression enabled.
|
*/
$config['compress_output'] = FALSE;
3aso 3< Reno$"rar un Ite$ de Carga 0uto$'ti%a
A*ra el siguiente arc>ivoG appli%ation%on#igautoload.p=p
1ncuentre este Htem del arra,G
$autoload['core'] = array();
R renm*relo a estoG
$autoload['libraries'] = array();
1stos cam*ios se >icieron &ara me%orar la claridad ,a -ue algunos usuarios no esta*an seguros -ue sus *i*liotecas
se &udieran cargar autom0ticamente.
3aso -< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.3.3 a 1.-.0
:ota< 6as instrucciones en esta &0gina asumen -ue 7d est0 e%ecutando la versin 1... 2i no actuali" a esta
versinI >0galo &rimero.
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
Gua del Usuario de CodeIgniter Versin 2.1.3 344
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
appli%ation%on#ig=ooIs.p=p
appli%ation%on#ig$i$es.p=p
%odeigniter
drivers
=elpers
init
language
li"raries
s%a##olding
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0%tuali8ar su ar%=ivo %on#ig.p=p
A*ra su arc>ivo appli%ation%on#ig%on#ig.p=p , agregue estos nuevos HtemsG
/*
|--------------------------------------------------------------------------
| Enable/Disable System Hooks
|--------------------------------------------------------------------------
|
| If you would like to use the "hooks" feature you must enable it by
| setting this variable to TRUE (boolean). See the user guide for details.
|
*/
$config['enable_hooks'] = FALSE;
/*
|--------------------------------------------------------------------------
| Allowed URL Characters
|--------------------------------------------------------------------------
|
| This lets you specify which characters are permitted within your URLs.
| When someone tries to submit a URL with disallowed characters they will
| get a warning message.
|
| As a security measure you are STRONGLY encouraged to restrict URLs to
| as few characters as possible. By default only these are allowed: a-z 0-9~%.:_-
|
| Leave blank to allow all characters -- but only if you are insane.
|
| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!!
|
*/
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_-';
3aso 3< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
Gua del Usuario de CodeIgniter Versin 2.1.3 345
0%tuali8ar de 1.3.2 a 1.3.3
:ota< 6as instrucciones en esta &0gina asumen -ue 7d est0 e%ecutando la versin 1../. 2i no actuali" a esta
versinI >0galo &rimero.
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
%odeigniter
drivers
=elpers
init
li"raries
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0%tuali8ar sus Hodelos
2i :G est0 usando la @uncionalidad de 'odelos de CodeIgniterI >aga caso omiso a este &aso.
Desde la versin 1..I CodeIgniter no conecta autom0ticamente a la *ase de datos cuando el modelo se carga.
1sto le &ermite una ma,or @le<i*ilidad en determinar -ue *ase de datos -uerrHa usar con sus modelos. 2i su
a&licacin no est0 a su *ase de datos antes -ue a un modelo -ue se est0 cargandoI 7d tendr0 -ue actuali"ar su
cdigo. 9a, varias o&ciones &ara conectarI como se descri*e a-uH.
3aso 3< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.3.1 a 1.3.2
:ota< 6as instrucciones en esta &0gina asumen -ue 7d est0 e%ecutando la versin 1..1. 2i no actuali" a esta
versinI >0galo &rimero.
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
drivers
init
li"raries
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
Gua del Usuario de CodeIgniter Versin 2.1.3 346
3aso 2< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.3 a 1.3.1
:ota< 6as instrucciones en esta &0gina asumen -ue 7d est0 e%ecutando la versin 1.. 2i no actuali" a esta
versinI >0galo &rimero.
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
drivers
initinitBunitBtest.p=p Jnuevo en 1..1K
language
li"raries
s%a##olding
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
3aso 2< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de 1.2 a 1.3
:ota< 6as instrucciones en esta &0gina asumen -ue 7d est0 e%ecutando la versin 1./. 2i no actuali" a esta
versinI >0galo &rimero.
Antes de reali"ar una actuali"acin de*erHa sacar de lHnea su sitio reem&la"ando el arc>ivo inde1.p=p con uno
est0tico.
3aso 1< 0%tuali8ar sus ar%=ivos CodeIgniter
8eem&lace estos arc>ivos , directorios de su car&eta s;ste$ con las nuevas versionesG
appli%ation$odels Jnuevo en 1.K
%odeigniter Jnuevo en 1.K
drivers
=elpers
init
language
li"raries
plugins
s%a##olding
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
Gua del Usuario de CodeIgniter Versin 2.1.3 347
3aso 2< 0%tuali8ar sus ar%=ivos de error
6a versin 1. contiene dos nuevas &lantillas de error u*icadas en appli%ationerrorsI , &or consistencia de
nom*res las otras &lantillas de error se renom*raron.
2i no &ersonali" ninguna &lantilla de errorI sim&lemente reem&lace esta car&etaG
appli%ationerrors
2i personali8 sus &lantillas de errorI renm*relas asHG
-0-.p=p S errorB-0-.p=p
error.p=p S errorBgeneral.p=p
errorBd".p=p JnuevaK
errorBp=p.p=p JnuevaK
3aso 3< 0%tuali8ar su ar%=ivo inde1.p=p
Por @avorI a*ra su arc>ivo inde1.p=p &rinci&al Ju*icado en su raH"K. Al @inal del arc>ivoI cam*ie estoG
require_once BASEPATH.'libraries/Front_controller'.EXT;
A estoG
require_once BASEPATH.'codeigniter/CodeIgniter'.EXT;
3aso -< 0%tuali8ar su ar%=ivo %on#ig.p=p
A*ra su arc>ivo appli%ation%on#ig%on#ig.p=p , agregue estos nuevos elementosG
/*
|------------------------------------------------
| URL suffix
|------------------------------------------------
|
| This option allows you to add a suffix to all URLs.
| For example, if a URL is this:
|
| example.com/index.php/products/view/shoes
|
| You can optionally add a suffix, like ".html",
| making the page appear to be of a certain type:
|
| example.com/index.php/products/view/shoes.html
|
*/
$config['url_suffix'] = "";
/*
|------------------------------------------------
| Enable Query Strings
|------------------------------------------------
|
| By default CodeIgniter uses search-engine and
| human-friendly segment based URLs:
Gua del Usuario de CodeIgniter Versin 2.1.3 348
| example.com/who/what/where/
|
| You can optionally enable standard query string
| based URLs:
|
| example.com?who=me&what=something&where=here
|
| Options are: TRUE or FALSE (boolean)
|
| The two other items let you set the query string "words"
| that will invoke your controllers and functions:
| example.com/index.php?c=controller&m=function
|
*/
$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
3aso )< 0%tuali8ar su ar%=ivo data"ase.p=p
A*ra su arc>ivo appli%ation%on#igdata"ase.p=p , agregue estos nuevos elementosG
$db['default']['dbprefix'] = "";
$db['default']['active_r'] = TRUE;
3aso `< 0%tuali8ar su gua del usuario
Por @avor reem&lace su co&ia de la guHa del usuario con la nueva versinI inclu,endo los arc>ivos de im0genes.
0%tuali8ar de &eta 1.1 a >inal 1.2
:ota< 2i tiene alg:n arc>ivo desarrollado a medidaI &or @avor >aga una co&ia &rimero.
Para actuali"ar a la !ersin 1./ &or @avor reem&lace los siguiente directorios con las nuevas versionesG
drivers
=elpers
init
language
li"raries
plugins
s%a##olding
Por @avorI tam*in reem&lace la co&ia local de la guHa del usuario con la nueva versin.
0%tuali8ar de &eta 1.0 a &eta 1.1
Para actuali"ar a Beta 1.1I &or @avor e%ecute los siguientes &asosG
3aso 1< Ree$pla8ar el ar%=ivo inde1
8eem&lace su arc>ivo inde1.p=p &rinci&al con el nuevo arc>ivo inde1.p=p. 3otaG 2i renom*r su car&eta
s;ste$ necesitar0 editar esta in@ormacin en un nuevo arc>ivo.
Gua del Usuario de CodeIgniter Versin 2.1.3 349
3aso 2< Reu"i%ar la %arpeta %on#ig
1sta versin de CodeIgniter a>ora &ermite varios con%untos de Na&licacionesN &ara com&artir un con%unto com&leto
de arc>ivos de *ac;end. Para >a*ilitar cada a&licacin &ara -ue tenga sus &ro&ios valores de con@iguracinI el
directorio %on#ig a>ora tiene -ue estar dentro de su car&eta appli%ationI &or lo -ue de*er0 moverla a>H.
3aso 3< Ree$pla8ar dire%torios
8eem&lace los siguientes directorios con sus nuevas versionesG
drivers
=elpers
init
li"raries
s%a##olding
3aso -< 0gregar el ar%=ivo de idio$a del %alendario
9a, un nuevo arc>ivo de idioma corres&ondiente a la nueva clase de calendario -ue se tiene -ue agregar a su
car&eta de idiomas. Agregue el siguiente elemento a su versinG languageenglis=%alendarBlang.p=p.
3aso )< Editar el ar%=ivo %on#ig
1l arc>ivo original appli%ation%on#ig%on#ig.p=p tiene un error de ti&eo. A*ra el arc>ivo , *us-ue los Htems
relacionados a las coo;iesG
$conf['cookie_prefix'] = "";
$conf['cookie_domain'] = "";
$conf['cookie_path'] = "/";
Cam*ie el nom*re del arra, de ?%on# a ?%on#igI como estoG
$config['cookie_prefix'] = "";
$config['cookie_domain'] = "";
$config['cookie_path'] = "/";
$inalmenteI agregue el siguiente nuevo Htem al arc>ivo de con@iguracin J, edite la o&cin si es necesarioKG
/*
|------------------------------------------------
| URI PROTOCOL
|------------------------------------------------
|
| This item determines which server global
| should be used to retrieve the URI string. The
| default setting of "auto" works for most servers.
| If your links do not seem to work, try one of
| the other delicious flavors:
|
| 'auto' Default - auto detects
| 'path_info' Uses the PATH_INFO
| 'query_string' Uses the QUERY_STRING
*/
$config['uri_protocol'] = "auto";
Gua del Usuario de CodeIgniter Versin 2.1.3 350
0ne1o II< Registro de Ca$"ios
Versin 2.1.3
$ec>a de 6i*eracinG 8 de octu*re de /01/
Errores %orregidos para 2.1.3
Corregido el error Jm14#K \ 1l mtdo getB$etadata+, de almacenamiento en cac> *asada en arc>ivo
usa*a una clave de arra, ine<istente &ara *uscar el valor CC6.
Corregido el error Jm11#K \ 1l mtodo sessBdestro;+, de la &i"liote%a 6ession no destruHa el arra,
userdata.
Corregido el error donde la &i"liote%a 3ro#iler &resentana el error EBW0R:I:G si los datos del usuario
de la sesin contenian o*%etos.
Corregido el error Jm16..K ( 6a &i"liote%a Higration ignora*a el valor de ?%on#igKL$igrationBpat=LM.
Corregido el error Jm//7K ( Input 7i"rar; &ermitHa la su&lantacin sin condiciones de direcciones IP de
clientes de 9CCP mediante el enca*e"ado .!!3BC7IE:!BI3.
Corregido el error Jm.07K ( 6a &i"liote%a Input ignora*a los enca*e"ados
.!!3BYBC7U6!ERBC7IE:!BI3 , .!!3BYBC7IE:!BI3 al veri@icar &ro<ies.
Corregido el error Jm.#0K ( %sr#Bveri#;+, solHa esta*lecer la coo;ie C28$ al &rocesar una solicitud P)2C
sin datos P)2C realesI lo -ue resulta*a en la validacin de una solicitud -ue de*erHa considerarse inv0lida.
Corregido el error en la &i"liote%a 6e%urit; donde una coo;ie C28$ se crea*a a:n cuando
?%on#igKL%sr#Bprote%tionLM @uera >076E.
Corregido el error Jm1714K \ 6a &i"liote%a Input dis&ara*a %sr#Bveri#;+, en solicitudes C6I.
:ota< Para ver los cam*ios de las versiones anterioresI lea el arc>ivo c>angelog.>tml. Cam*in &uede consultar
el mismo arc>ivo en la car&eta userBguide de su instalacin.