Cakephp ajax start voting. Sistema de votaciones en ajax mediante estrellas

Cakephp ajax start voting. Sistema de votaciones en ajax mediante estrellas

Hace mucho tiempo que he implementado en un site en cakephp, un sistema de votaciones con estrellas que funciona con ajax.

Fue bastante complejo y me llevó un tiempo, ahora lo retomo para publicarlo y compartirlo. Inicialmente seguí las indicaciones de un articulo publicado en bakery.cakephp.org que al final se puede ver la fuente original.

El sistema de votos por estrellas es ya muy conocido y lo tienen integrados muchos sites, pero meterlo en cakephp es un poco mas “laberíntico” porque hay muchos archivos que interfieren y en muchas capas de la lógica.

A continuación indico los pasos que he seguido

1 )
Lo primero descargar el plugin. Tener en cuenta la versión de Cakephp que uséis. Aquí indico las dos versiones disponibles hasta el momento.

[download id=”11″ format=”4″ autop=”false”]

[download id=”10″ format=”4″ autop=”false”]

2)
Extraer el plugin, incluir la carpeta rating en la carpeta de plugins en app/plugins

3)
Copiar el archivo rating/config/plugin_rating.php a tu carpeta app en app/config/plugin_rating.php

En este archivo se pueden especificar muchos detalles de configuración

Si se quiere habilitar para que usuarios anónimos no logeaos puedan usar el sistema para votar habrá que tener la siguiente activa a true

$config['Rating.guest'] = true;

Otro punto interesante de la configuración del plugins es poder guardar los resultados de cada voto en su modelo (tabla) correspondiente. Para ello tener en cuenta las siguientes variables.

$config['Rating.saveToModel'] = true;
$config['Rating.modelAverageField'] = 'votos_media';
$config['Rating.modelVotesField'] = 'votos';

Vienen bien explicadas en el archivo, así como las sqls que habría que ejecutar para crear los campos necesarios en cada tabla. Pero serían así

ALTER TABLE [TABLA] ADD (votos_media decimal(3,1) unsigned default '0.0');
ALTER TABLE [TABLA] ADD (votos int(11) unsigned default '0');

Si esto diera algún problema, recordar borrar la cache de los modelos  en  app/tmp/cache/models.

4)
Ejecutar las consultas que hay en el archivo install.sql para crear la tabla de ratings donde se guardarán todos los votos.

CREATE TABLE `ratings` (
 `id` int(11) unsigned NOT NULL auto_increment,
 `user_id` char(36) NOT NULL default '',
 `model_id` char(36) NOT NULL default '',
 `model` varchar(100) NOT NULL default '',
 `rating` tinyint(2) unsigned NOT NULL default '0',
 `name` varchar(100) default '',
 `created` datetime default NULL,
 `modified` datetime default NULL,
 PRIMARY KEY (`id`),
 KEY `rating` (`model_id`,`model`,`rating`,`name`)
);

5)
Cargar los archivos javascript y css del plugin en el layout o directamente en una vista. Reemplazar [your_framework] por prototype_min o jquery_min dependiendo del framework javascript que useis.
Personalmente yo he usado y me gusta mucho mas jquery.

<?php
 echo $javascript->link('/rating/js/rating_jquery_min');
 echo $html->css('/rating/css/rating');
?>

6)
Agregar el elemento rating en la vista de la siguiente manera. Reemplazar [name_of_your_model] y [id_of_your_model] por vuestros valores

<?php
echo $this->element('rating', array('plugin' => 'rating',
 'model' => '[name_of_your_model]',
 'id' => [id_of_your_model]));
?>

Un ejemplo real podría ser el siguiente:

<?php 
echo $this->element('rating', array('plugin' => 'rating',
'model' => 'Articulo',
'id' => $articulo_ficha['Articulo']['id'])); 
?>

Puediera ser que os de errores. Yo tuve que poner el archivo /rating/model/rating.php en mi aplicación app/models/rating.php
También comenté todo el sistema que tiene de validación de campos.

<?php
/**
 * Model for the AJAX star rating plugin.
 *
 * @author Michael Schneidt <michael.schneidt@arcor.de>
 * @copyright Copyright 2009, Michael Schneidt
 * @license http://www.opensource.org/licenses/mit-license.php
 * @link http://bakery.cakephp.org/articles/view/ajax-star-rating-plugin-1
 * @version 2.3
 */
class Rating extends RatingAppModel {
  var $name = 'Rating';
  /*
  var $validate = array('user_id' => array('rule' => array('maxLength' => 36),
                                           'required' => true),
                        'model_id' => array('rule' => array('maxLength' => 36),
                                            'required' => true),
                        'model' => array('rule' => 'alphaNumeric',
                                         'required' => true));
*/
}
?>

Espero que os funcione a la primera! 😉

Fuente original: http://bakery.cakephp.org/articles/schneimi/2010/08/19/ajax-star-rating-plugin-1

Tags de búsquedas:

cakephp voting with ajax,crear sistema de votacion ajax,hacer una votacion por dia cakephp,sistema en php para votacion,sistema votacion ajax estrellas,votación cakephp,votación estrellas AJAX,voting cakephp

Noticias relacionadas »

1 comentario en “Cakephp ajax start voting. Sistema de votaciones en ajax mediante estrellas

  1. / Responder

    Gracias! Aasi da gusto que te creen un post a medida xD

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Invertir en criptomonedas: »

 

Cómo comprar bitcoin

Invertir y comprar Bitcoin y otras altcoins es más fácil de lo que crees.

1) Si sólo quieres comprar Bitcoin, Ethereum o Litecoin como inversión, tu opción es Coinbase

2) Si quieres probar con otras criptomonedas tu opción es Binance

3) Cualquier duda escríbeme con total libertad al formulario de contacto para resolver dudas: https://www.pedroventura.com/contacto/

¡Comparte este artículo! »

  • Pedro (17 min)
    Buenos días Margherita El plugin está obsoleto y ya no…
  • Juan Carlos Díaz (10 horas)
    Este grupo de Telegram me ha dado muy buenas señales…
  • Margherita (21 horas)
    Hola, tengo un problema con el plugin. Tanto en la…
  • Pablo H (2 semanas)
    Hola Pedro, Muchas gracias por el post, me fue muy…
  • Pedro Ventura (2 semanas)
    Hola Margat Muchísimas gracias por tu comentario, me alegro de…
  • Pedro Ventura (2 semanas)
    Hola Rebeca, Tan sólo se permite 1 dominio por cuenta.…

Suscríbete al newsletter »

Proporciona tu correo electrónico a continuación y recibe las últimas noticias! Funciona con Feedburner de Google

Archivo »

Leer entrada anterior
No disponible por mantenimiento programado. Vuelve a comprobar el sitio en unos minutos.

Ufff que susto me acabo de llevar cuando actualizado una lista de 6 plugins al mismo tiempo me ha aparecido...

Cerrar