Veamos como crear helpers en Yii.
Lo recomendable es crear el fichero protected/components/helpers.php y ahí crear todas las funciones helper que necesitemos.
El siguiente paso será incluir este archivo de helpers en el fichero de principal de configuración justo antes del array de configuración, de esta forma:
//Cargar helpers
require_once( dirname(__FILE__) . ‘/../components/helpers.php’);
Ejemplo:
<?php // protected/components/helpers.php // Aqui van los helpers //Comprobar que no existe la función if(!function_exists("imprimirTiempo")){ //Esta función formatea una fecha e imprime hace cuanto tiempo fue. function imprimirTiempo($fecha,$hora){ $start_date = new DateTime($fecha." ".$hora); $since_start = $start_date->diff(new DateTime(date("Y-m-d")." ".date("H:i:s"))); $hace="Hace "; if($since_start->y==0){ if($since_start->m==0){ if($since_start->d==0){ if($since_start->h==0){ if($since_start->i==0){ if($since_start->s==0){ $medida_tiempo= $since_start->s.' segundos'; }else{ if($since_start->s==1){ $medida_tiempo= $since_start->s.' segundo'; }else{ $medida_tiempo= $since_start->s.' segundos'; } } }else{ if($since_start->i==1){ $medida_tiempo= $since_start->i.' minuto'; }else{ $medida_tiempo= $since_start->i.' minutos'; } } }else{ if($since_start->h==1){ $medida_tiempo= $since_start->h.' hora'; }else{ $medida_tiempo= $since_start->h.' horas'; } } }else{ if($since_start->d==1){ $medida_tiempo= $since_start->d.' día'; }else{ $medida_tiempo= $since_start->d.' días'; } } }else{ if($since_start->m==1){ $medida_tiempo= $since_start->m.' mes'; }else{ $medida_tiempo= $since_start->m.' meses'; } } }else{ if($since_start->y==1){ $medida_tiempo= $since_start->y.' año'; }else{ $medida_tiempo= $since_start->y.' años'; } } $resultado=$hace.$medida_tiempo; return $resultado; } }//Fin helper imprimirTiempo //A partir de aquí meter todas las funciones helper que quieras ?>
Ahora en una vista o controlador tenemos a nuestra disposición esta función.
<h1>Probando mis helpers</h1> <?php $fecha="2014-05-14"; $hora="13:04:01"; echo imprimirTiempo($fecha, $hora); ?>
Más información:
http://www.yiiframework.com/wiki/165/understanding-autoloading-helper-classes-and-helper-functions/