Flydreamers.com – Red social de pesca hecha en Yii

0

Flydreamers es una red social para los que aman la pesca con mosca.

Qué es la pesca con mosca?? Mirá el video que ponemos a continuación:

 

Qué tiene de importante este sitio?? Esta basdo en Yii

Desde su base fue pensado para crecer y junto con este crecimiento desde Artfos (empresa que lo desarrollo y en la cual trabajo) se eligió Yii.

 

Salió el nuevo Yii PHP framework 1.1.11

1

Más de 100 mejoras y arreglos de bugs en esta nueva versión de Yii!!

Campos HTML5 en CHtml

Se agregó este nuevo grupo de campos en CHtml:

CFormatter::formatSize()

Te deja formatear bytes, en KB, MB, etc.

echo Yii::app()->format->formatSize(115969); // displays: 113.25 KB

Código de retorno en la aplicaciones de consola

Ahora se puede devolver un entero en la aplicaciones de consola para ser utilizado como código de retorno de la aplicación.

To learn more refer to the definitive guide.

CJavaScript::encode() and js:

Si estas usando CJavaScript::encode() en tu aplicación con parametros ingresador por el usuario, tu aplicación es vulnerable. Para que esto no pase, existe un nuevo parametro que valida este tipo de injection seteando el segundo parametro a true:

CJavaScript::encode($userInput, true);

Esto desabilitará los parametros con el prefijo js:. Si necesitas pasar una expresión JS, podés hacerlo con  CJavaScriptExpression:

CJavaScript::encode(new CJavaScriptExpression('alert("Yii!");'), true);

Cache HTTP

Para simplificar la salida del cache en las salidas de las acciones indicando mediante headers HTTP que la página no se ha modificado al cliente. CHttpCacheFilter puede ser seteado de forma similar a como se utiliza COutputCache:

public function filters()
{
    return array(
        array(
            'CHttpCacheFilter + index', 'lastModified'=>Yii::app()->db->createCommand("SELECT MAX(`update_time`) FROM {{post}}")->queryScalar(), ), ); }

Blacklist de reglas de validación en modelos

Si no querés que una regla de validación se utilice, podés utilizar el parametro except para cancelar su utilización en ciertos escenarios. La sintaxis es la misma que para el parametro on:

// string with scenario names separated with commas (spaces are ignored)
array('username', 'required', 'except'=>'ignore, this, scenarios, at-all',)

Yii PHP framework 1.1.11 is released | News | Yii Framework.

Yii Framework en Español

0

Nuevo grupo de Yii Framework en español

La verdad es que no se mucho del grupo, uno de los desarrolladores me preguntó acerca de como manejar el desarrollo de su sitio, si abierto o cerrado. Le comenté que siempre los códigos fuentes de páginas es mejor guardarlos interno entre los desarrolladores por temas de seguridad. No se muy bien que se traen entre manos, pero estaremos viendo que es lo que harán!

Su sitio web: Yii Framework en Español.

Volvemos a la carga

0

Luego de casi dos años sin escribir, me tomé un poco de tiempo libre jejeje, y bueno, aquí vamos.

En el transcurso de la semana un nuevo post increible va a salir….

También estaremos cubriendo algunas extensiones que estemos utilizando en Artfos!

Espero poder escribir más y más cada día.

Saludos!

Lanzamiento de Yii 1.1.4 con una mejora que se hacía esperar!!

2

Se ha lanzado la nueva versión de Yii, la 1.1.4, y junto a esta se observa uno de los cambios más importantes en lo que ha sido de Yii hasta el momento ya que el mismo lo utilizan TODOS LOS QUE UTILIZAMOS Yii A DIARIO!!

Y ahora si, basta de preambulos, la nueva mejora es el binding de parametros en las acciones!

Y esto que es?? Pues muy simple, cuando uno llama a una página en Yii, siempre envia parámetros en el request (http://myweb.com/index.php?r=post/view&id=232 – en este ejmplo se pasan 2 parametros, el de la ruta y el del ID) por lo menos la ruta de la acción a ejecutar. Ahora, si uno define la acción a ejecutar de la siguiente forma:

public function actionCreate($category, $language='en')
    {
        $category=(int)$category;
 
        // ... fun code starts here ...
    }

Y de esa forma no tener que hacer la molesta verificación de si se envió el parametro category mediante GET. En el caso de que no se envie Yii automáticamente lanzará una error HTTP 400.

Estoy muy emocionado ya que esta herramienta me permitirá escribir muchas, pero muchas menos lineas de código!

Customizar las opciones de los widgets mediante la configuración de aplicación

2

A partir de la versión 1.1.3 de Yii, se puede editar las configuraciones de los widgets utilizados a travez de toda la aplicación mediante la configuración de la misma.

Para utilizar esto solo se debe agregar los valores para cada tipo de Widget dentro de la configuración de la siguiente forma:

return array(
    'components'=>array(
        'widgetFactory'=>array(
            'widgets'=>array(
                'CLinkPager'=>array(
                    'maxButtonCount'=>5,
                    'cssFile'=>false,
                ),
                'CJuiDatePicker'=>array(
                    'language'=>'ru',
                ),
            ),
        ),
    ),
);

Y listo!! De esa forma se modifican a lo largo de toda nuestra aplicación!

Usar las relaciones de estadísticas de los ActiveRecords

0

Para poder utilizar las estadísticas de los AR de forma fácil les preparé un pequeño instructivo:

1- Las estadísticas de relaciones solo se pueden sacar de relaciones MANY_MANY o HAS_MANY.

2- Para poder definir el tipo de estadística (COUNT, SUM, AVG, MIN, MAX) es necesario editar la propiedad ‘select’ de la relación, ejemplo: (“COUNT(*)”, “AVG(edad)”, etc).

3- Si la relación no tiene ningún item como parte de si misma se define la propiedad ‘defaultValue’ que por default (valga la redundancia) tiene seteado 0.

Para crear la relación hacemos lo siguiente en el ActiveRecord:

public function relations(){
	return array(
		'cantidadImagenes' => array(self::STAT, 'ImageRecord', 'item_has_image(iditem, idimage)', 'condition'=>'is_woman = 1'),
		'edadPromedioComentarios' => array(self::STAT, 'UsuarioRecord', 'usuario(idusuario)', 'select'=>'AVG(edadPromedioComentarios.edad)'),
	);
}

Para utilizarlos solo debes hacer lo siguiente:

	$item = MyAR::model()->with('cantidadImagenes')->find(); // Busco el primero cualquira sea
	echo $item->cantidadImagenes; // Esto muestra en la página la cantidad de imágenes

Espero les haya gustado y proximamente nuevos posts!!

Cómo realizar un sitio multilenguaje con yii mediante get

9

Cuando uno realiza una página multilenguaje (totalmente traducida), no desea que cuando uno hace click en ver en otro idioma la página se recargue y empiece desde el inicio nuevamente. Para que esto no suceda, se puede utilizar una variable en cada request y actualizar el lenguaje y la forma de cambiar el lenguaje es realizar un request que modifique la inforamción del lenguaje en la cookie,

Sabemos que a veces es muy molesto utilizar las cookies para mantener el lenguaje ya que si el usuario cierra la sesión y uno destruye la misma, la selección del lenguaje se pierde; si uno lo realiza mediante cookies hace que cada request al sitio envie más información que la necesaria (tanto para imágenes como para un archivo) y si uno lo hace mediante GET, todas las páginas deben tener esta información lo cual es muy trabajoso. Como en Yii siempre utilizamos el método createUrl de CUrlManager, entonces hacer que se incluya el lenguaje en cada link es tan simple como hacer que automáticamente se agregue cuando uno llama a este método. Esto funciona correctamente en todos los casos pero siempre se debe recargar la información del lenguaje mediante el método que se utiliza cada vez que un request llega para que todo lo que se cree se encuentre en el idioma correcto. Creemos ventajoso usar el get ya que esto deja que cada idioma se encuentre en la URL y a su vez ayude en el SEO del sitio. Es por eso que nuestra propuesta esta basada en GET, es muy simple y con solo 3 pasos uno puede tener su sitio utilizando multilenguaje sin problemas.

Paso 1

Extender el componente CUrlManager para que automáticamente agregue el lenguaje a cada uno de los links creados.

class MyCUrlManager extends CUrlManager
{
    public function createUrl($route,$params=array(),$ampersand='&')
	{
        if (!isset($params['language']))
            $params['language']=Yii::app()->language;
        return parent::createUrl($route, $params, $ampersand);
	}
}

Paso 2
Se modifica el config para que la aplicación utilice el componente recién creado MyUrlManager en lugar del componente CUrlManager

return array(
	... // more config here

	'language'=>'pt',
	'sourceLanguage'=>'en',

	... // more config here

	// application components
	'components'=>array(
		'urlManager'=>array(
            'class'=>'application.components.MyCUrlManager',
            'urlFormat'=>'path',
            'rules'=>array(
                '/home'=>'site/index',
		        '/list/-'=>'item/list',
		        '/<_a:(contact|login|signup|search|logout)>'=>'site/<_a>',
                '/<_c:\w+>'=>'<_c>',
                '/<_c:\w+>/<_a:\w+>'=>'<_c>/<_a>',
				'/admin'=>'admin/admin',
				'admin'=>'admin/admin',
		        'admin/<_c:\w+>/<_a:\w+>'=>'admin/<_c>/<_a>',
        	    'admin/<_c:\w+>'=>'admin/<_c>',
                '/admin/<_c:\w+>/<_a:\w+>'=>'admin/<_c>/<_a>',
        	    '/admin/<_c:\w+>'=>'admin/<_c>',
			),
        ),
	... // more config here
);

Paso 3

Extiendo la clase CController para que en cada parte de la aplicación se actualice el lenguaje al que esta indicado en el QueryString y utilizo esta nueva clase creada en todos mis controladores del proyecto.

class MultilanguageController extends CController{
    //put your code here
    public function __construct($id,$module=null){
        parent::__construct($id,$module);
        Yii::app()->language = (isset($_GET['language']))?$_GET['language']:Yii::app()->language;
    }

    public function createMultilanguageReturnUrl($lang='pt'){
        $arr = array('language'=>$lang);

        if (count($_GET)>0){
            $arr = $_GET;
            $arr['language']= $lang;
        }

        return $this->createUrl('', $arr);
    }
}

Paso 4 (opcional)
En cada lugar que quiero poner un link que cambie de lenguaje mi aplicación, utilizo la siguiente forma:

 echo CHtml::link('ver en español', $this->createMultilanguageReturnUrl('es')) . ' | ' .   CHtml::link('ver en español', $this->createMultilanguageReturnUrl('en')); 

En donde el parametro enviado a createMultilanguageReturnUrl es el lenguaje en el que se quiere traducir la página actual.

Bienvenidos al blog con información del framework Yii en español

7

Estamos muy emocionados con esta nueva iniciativa. La idea es empezar a incentivar a los lectores el uso del framework Yii para PHP mediante noticias que serán agregadas regularmente que ayuden a realizar acciones que son de uso común entre los proyectos.
También estamos esperando que nos envien información o preguntas así podremos responderlas de formá rápida y eficiente. Para esto deben utilizar el módulo de Q&A de nuestro blog.

Esperamos verlos nuevamente por aquí.

Sebas

Go to Top