2011-05-29

Multiples validaciones desde el Model y Form con CakePHP

In CakePHP, you define how your data should be validated by setting parameters on the validate property of your model. In version 1.2, there is an on option that can be set on a specific rule that, when set, is either create or update. This allows you to define different rules depending on the type of action being performed. That, in combination with the required and allowEmpty properties, give you a fair amount of control over different validation rules.
Despite that, I developed a slightly different approach that allows for different validation sets to be specified and to be cleanly separated from each other.
I override the validates method within a custom AppModel (stored in /app/app_model.php). The validates method is called when a save call is made or it can be called manually. This custom method can perform in one of two ways:

Method One: Action-specific Validation Sets

It'll first look to see if you have a validation set specified for the current controller action. For example, if you were in the edit action, it'd look for a property in the model called validateEdit. If it doesn't exist, it'll default back to using the normal validate property.
class User extends AppModel {
   // performs normal validation
   var $validate = array( ... ); 
   // used in an edit action like /users/edit/1
   var $validateEdit = array( ... ); 
   // used in a forgotpassword action like /users/forgotpassword
   var $validateForgotpassword = array( ... );
}
In that Forgot Password example, this would allow you to avoid performing your own checks for even basic calls and keep the logic tucked away in the Model.
class UsersController extends AppController {
   function forgotpassword() {
      $this->User->set($this->data);
      if ($this->User->validates()) {
         // send email to reset password and show success message
      }
   }
}
The thing I like about this is that the error messaging is handled by the validation and the FormHelper. (Although, a more noticable flash message near the top of the page is also helpful.)

Method Two: Custom Validation Sets

Alternatively, you may wish to specify a validation set manually before calling save or validates on a model. To do this, just specify a validationSet property on the model right before your call. The property will be unset immediately afterwards allowing normal validation rules to be applied.
Here's an alternate approach to the forgotten password example:
class User extends AppModel {
   var $validateForgotpassword = array( ... );
}

class UsersController extends AppController {
   function forgot() {
      $this->User->set($this->data);
      $this->User->validationSet = 'forgotpassword';
      if ($this->User->validates()) {
         // send email to reset password and show success message
      }
   }
}

The Code

Here is the custom validates method that pulls this all off:
function validates($options = array()) {
    // copy the data over from a custom var, otherwise
    $actionSet = 'validate' . Inflector::camelize(Router::getParam('action'));
    if (isset($this->validationSet)) {
        $temp = $this->validate;
        $param = 'validate' . $validationSet;
        $this->validate = $this->{$param};
    } elseif (isset($this->{$actionSet})) {
        $temp = $this->validate;
        $param = $actionSet;
        $this->validate = $this->{$param};
    } 
    
    $errors = $this->invalidFields($options);

    // copy it back
    if (isset($temp)) {
        $this->validate = $temp;
        unset($this->validationSet);
    }
    
    if (is_array($errors)) {
        return count($errors) === 0;
    }
    return $errors;
}

Link de la fuente

2011-05-25

Red Social con CakePHP lista para modificar y adaptar a tus necesidades..



Navegando hoy me encontré con  este paquete que se llama NoseRub el cual implementa una Red Social sobre el FrameWork CakePHP. Es una forma de iniciar un prefecto basado en un red social para tener mucho trabajo realizado y no comenzar desde cero después queda agregarles las mejora que tu requieras. Pero en realida fue creado para centralizar tus redes sociales en tu popio servidor para tener todo en un solo lugar utilizando las otras redes sociales como fuentes de datos

Link a sitio para su descarga.

Mis Snippets para AndroId

Como bloquear el botón Atras o "Back" en AndroId para cuando desarrollamos una aplicaciones:



Otra alternativa con el botón Atras o "Back" también es utilizar "onBackPressed()" pero esta disponible de AndroId 2.0 en adelante:



Mas información sobre lo anterior ACÁ

Link interesantes sobre AndroId, Snippets de utilidad y mas..

 
 
Prendiendo Los que seguís esta sección, puede que recordéis haber leído en alguna ocasión que estaría basada en códigos y también en esos llamados “Snippets“. Estos “Snippets” son, intentando hacer una traducción literal, “trozos de” o “fragmentos de”, pequeñas partes de un código que pueden cumplir una función concreta y por lo general muy útil dentro de una aplicación. Desde hace bastante tiempo a esta parte he estado...
 
Volvemos tras un paréntesis a la quincenal cita de “Aprendiendo android”. Esta, si no me fallan las cuentas, es la décima entrega de esta sección, en ella hemos hablado de muchos temas o métodos de hacer cosas, pero sobre todo, y es en lo que más me gusta insistir, en las bases de las cosas. Voy a intentar explicarme, por ejemplo, en esta quincena y tras consultar los mails o tweets que tenía recibido con peticiones sobre las temáticas,...
 
Volvemos con una nueva entrega de “Aprendiendo android”, la novena ya Se puede decir, a grandes rasgos, que los desarrolladores de android pueden dividirse en dos bloques, hablando de forma muy general claro, los que provienen de otro lenguaje de programación y los que no. Si algún lector de este blog está leyendo esto y pensando si empezar a desarrollar para este sistema operativo, a este respecto puedo decir que el consejo que me dieron a...
 
Este artículo se publicó en mi blog hace ya algunos días. Como uno de los cuatro gatos que me leen es Adrian de El Androide Libre y parece que le gustó, me propuso muy amablemente publicarlo también en EAL (minolles y minolles de gracias). ¡Mira mamá! ¡Salgo en el androide libre! Trata sobre los layouts de Meneadroid, ya que mucha gente me ha preguntado al respecto. Meneadroid es una aplicación Android cliente del sitio Meneame.net (disclosure:...
 
 
“Aquí estamos de nuevo, con nuestros eclipses listos y una nueva entrega de “aprendiendo android”. A raíz de estos artículos u otras vías, a veces me llegan dudas o preguntas de como se pueden realizar determinadas acciones en android, o simplemente consultas de ejemplos de códigos para implantar en aplicaciones. Para está ocasión he optado por rescatar dos de estas demandas para explicar como pueden ser ejecutadas en android. De...

Volvemos al ataque con la VII entrega de “Aprendiendo android”. Cuando se inició esta sección, al igual que ocurre con todas claro, no sabía si finalmente podría resultar de utilidad o facilitar las cosas a iniciados o no tan iniciados, lo cierto es que hasta la fecha de hoy he recibido no pocos tweets de personas que me cuentan que algo de lo aquí explicado les ha ayudado con sus aplicaciones o desarrollos. Solo quería comentar...

Continuamos nuestro camino en el aprendizaje de funcionalidades con una nueva y veraniega entrega de “aprendiendo android” Hasta ahora estamos viendo partes sólidas del código de una aplicación, ajustes gráficos, listeners, acceso gps  movimiento entre actividades… Esta vez nos introducimos en esa parte del código que no realiza una acción concreta, sino que ayuda a que otras cosas del código, como por ejemplo las vistas...

Unos van de vacaciones y otros vuelven, en mi caso, me identifico con el segundo grupo, para los que ahora van a tener más tiempo y para los que buscan el tiempo donde lo haya, vamos con una nueva entrega de códigos, snippets o usos de programación android. En esta entrega vamos a hablar de la iniciación a una aplicación de android por la que ya habéis preguntado en más de una ocasión, el acceso al GPS. Como es bien sabido, la mayoría de...

En esta ocasión vamos a cambiar de tercio en lo que se refiere a la temática a explicar. El desarrollo de una aplicación conlleva diversos aspectos además del que todos conócenos sobre programación, nos referimos por ejemplo al aspecto gráfico o para que todo lo que hemos hecho llegue al usuario final, la distribución de nuestro programa. Nada nuevo bajo el sol si digo que la vía de distribución más extendida para aplicaciones android es...


Tras una ajetreada semana en el universo android con la actualización oficial de froyo, el más que feliz cumpleaños de el androide libre, presentación de lo nuevo de motorola, etc, continuamos con la tercera entrega de aprendiendo android, para los curiosos del “como se hace” A diferencia del último capítulo donde principalmente nos centramos en ver como se estructuraba una aplicación en relación a las actividades o llamadas...
 
Continuamos con una nueva entrega sobre trucos, explicaciones, o snippets que puedan sernos útiles en el desarrollo de nuestras aplicaciones android. Anteriormente vimos que una vez el desarrollador tiene el esquema de lo que va a ser su código, puede encontrarse con pequeños inconvenientes no previstos que retrasarán el ritmo de creación. En esta ocasión vamos a centrarnos en explicaciones o ejemplos básicos que responden a algunas de las...
 
Estrenamos una sección llamada Aprendiendo Android. Cada 15 días, Vierco, nos traerá algunos trucos, snippets para facilitar la vida a los desarrolladores de android. Va por ellos Cuando alguien se propone desarrollar una aplicación para android, por lo general se sigue un planteamiento que va desde el concepto inicial de la idea hasta el resultado final. Aunque esto por supuesto, queda a gusto o manías del programador. Una vez se tiene esa...

Aplicacion util para tu AndroId "Luz Led | Tu linterna de mano"


Navegando en el Market de Google me encontré con esta aplicación, la cual es muy útil y es buena tenerla en el celular, porque cuando te corte la luz, con solo sacar tu móvil y ejecutar "Luz Led | Tu linterna de mano" para poder ir a buscar las velas o iluminar ese rincón donde siempre te falta luz. Ademas tiene un reloj central donde podes ir mirando cuanto tiempo paso de que te cortaron las luz mientra te ilumina la habitación.

Se que hay muchas de este tipo de aplicaciones pero esta me pareció la mejor por su peso, funciones y estabilidad de la misma.

Y lo mejor de todo que solo ocupa 3k y es gratis..

Link de descarga: Luz Led | Tu linterna de mano

Algunos pantallso






2011-05-08

G5 – Framework para contstruir sitios web PHP en HTML5

G5 es un framework para construir sitios web PHP en HTML5 que hace uso de los recursos más populares como Modernizr, jQuery, CSS3 Pie, etc ..
framework PHP-HTML5
Entre sus características se encuentran:
  • Robots.txt Meta para los motores de búsqueda
  • Utilización de GZip para la carga de páginas web más rápidas
  • Prevee el caché de CSS
  • Uso de Sticky footer: Pie de página que se mueve hacia donde la pantalla se mueva, es decir que permanezca pegado a la barra de navegación.(Tutorial para crear Sticky Footers)
  • etc …
El diseño está estructurado con una anchura de 940px e incluye elementos añadidos como por ejemplo Image Slider (Orbit), Tool Tips (Tipsy) y cajas modales (Reveal).
Vía: Webresourcesdepot