Píldora – Traducción de fechas en cakephp 2.0.

 

cakePhp

Si usamos el Helper Form para construir nuestro formularios, cuando tenemos un campo fecha, los meses no salen en inglés. ¿Como traducir esto?

Primero fijarnos en el Helper Form, como están construidos los textos traducibles

__d('cake', 'January');

Viendo en el código vemos que el archivo que va a buscar las traducciones no es el default.po ( como en otras versiones de cakePhp, sino uno llamado cake.po, habría que crear este archivo con las traducciones de todos los meses o descargar el que tengo hecho.

El último paso para que esto funcione, es configurar el cakePhp para que el idioma definido sea castellano.

Para probar ponemos el siguiente código en el controlador que necesitemos esa traducción.

Configure::write('Config.language', 'spa');

Formularios en HTML5

 

Código

Una de las mejoras en el nuevo Estandar HTML5 aún en desarrollo, está en los Formularios, es cierto que no todos los navegadores tiene la posibilidad de ejecutar correctamente todas las funciones de HTML5, pero es bueno empezar a usar muchas de sus funciones para los navegadores más modernos, nos ahorran mucho trabajo, y siempre hay herramientas como modernizr que nos ayudarán con los navegadores que no soportan HTML5.

Placeholder

Un nuevo atributo que sirve para poner texto dentro de un input cuando está vacío, y que al tabular o pulsar dentro del input desaparezca ese mismo texto, antes para hacer esto había que usar javascript.

<input type="text" placeholder="texto ejemplo">

Autofocus

Nos ayuda a definir que input va a quedar marcado, enfocado, cuando se cargue la página.

<input id="buscar" type="text" autofocus>

Required

Un nuevo atributo que apunta que campos tiene que estar rellenos antes de enviar el formulario, para hacer esto había que crear javascript algo largo dependiendo tipos de campos y las comprobaciones que hacíamos.

<input type="text" name="usr_name" required="required" />

Nuevos tipos de inputs

Tipo search, un input en el que el texto visualmente se le añade una x parar borrar el texto.

<input type="search" name="buscar" />

Tipo email, un input en el que el texto tiene que ser un email.

<input type="email" name="email" />

Tipo url, un input en el que el texto tiene que ser un url

<input type="url" name="miweb" />

Tipo number, con los atributos min, max, y step, nos ayuda a seleccionar un número.

<input type="number" max="10" min="0" step="2" name="minumero" />

Tipo range, similar a number con los mismos atributos, pero visualmente es similar a un slide.

<input type="range" max="10" min="0" step="2" name="minumero" />

En fechas hay varios date, mounth, week, time, datetime.










Medir tráfico saliente en Google Analytics

 

Código

Normalmente queremos saber, cuanto tráfico viene, de donde, la calidad de este tráfico. Pero y cuando tenemos la necesidad de saber cuanto tráfico sale por determinados lugares de nuestra web.

Voy a  poner un ejemplo práctico, yo al menos así lo suelo entender mejor.

Tenemos una super web y tiendasreunidas.com quiere publitarse en nuestra web, con un banner, necesitamos saber cuanto usuarios nuestros cliquean al enlacen y se van a tiendasreunidas.com

Si ya tenemos instalado en nuestra web Analytics de google. solo tendremos que hacer lo siguiente:

<a href="http://www.tiendasreunidas.com" onClick="javascript:pageTracker._trackPageview('/outgoing/tiendasreunidas_com');">

También hay posibles casos en que necesites esto mismo para un formulario, el onClick lo ponemos en el submit del formulario:

<input type="submit" value="Enviar" onClick="javascript:pageTracker._trackPageview('/outgoing/tiendasreunidas_com');"/>

Formulario Ajax en Cakephp

 

cakePhp

Algo que a veces queremos hacer, es al tener un formulario, ver los datos enviados desde el formulario si refrescar la página.
Un ejemplo de como hacerlo añadiendo un album, con un campo nombre.

Hay dos cosas a tener en cuenta, el envio del formulario es ajax, pero tambien el div donde cargaremos los resultados es ajax.

$content .= $this->Ajax->div('calendars');
foreach ($calendars as $calendar){
$content .=$interestDestination["InterestDestination"]["name"];
}
$content .=  $this->Ajax->divEnd('calendars');

$content .= $this->Ajax->form('/calendars', 'post', array('update' => 'calendars'));
$content .= $this->Form->input('name', array('label' => 'Agregar Nuevo Grupo:', 'error' => __('Nombre no valido', true)));
$content .= $this->Form->submit('Añadir',array('escape'=>false));
$content .= $this->Form->end();

return $content

Podemos ver que el update del form tiene el mismo nombre que le div Ajax, está observación es importante ya que el formulaior hace la llamada a este div, y esté div es el que se refrescará sin tener que refrescar toda la página.

En el controlador deberemos tener en cuenta, el añadir var $helpers = array(‘Ajax’);

Y también en la función en este caso “calendars” que ejecutamos desde nuestro formulario, deberemos hacer un render a la página donde se encuentra el mismo formulario.
Por ejemplo si nuestro formulario está en nuestro index $this->render(‘index’, ‘ajax’);