Llevo un rato peleándome con esto y finalmente he encontrado solución.
El caso es que los de PHP al hacer los métodos MultiByte (un apaño que harían al ver que se olvidaron del resto de juegos de caracteres…) no hicieron ni el de primera letra mayúscula ni minúscula.
Ambos métodos me son muy útiles para activar / desactivar usuarios de una wiki (ya que un usuario no puede acceder al sistema mediawiki si tiene la primera letra en minúscula), así que en realidad no he tenido más remedio que hacerlo (nooo, yo no queríaaa..!! xD) Llegir més…
Hoy mismo he necesitado de una validación para verificar si un dato ya existe en la base de datos. Dado que CakePHP 1.1 (en versiones posteriores a la 1.2 podéis utilizar “isUnique”) no lleva una validación en su núcleo para estos menesteres he tenido que crearla y ahora la comparto con vosotros:
/**
* Verifica si un campo existe en la base de datos
* Si estamos editando se excluye el valor guardado en la validación
* @param array $data
* @param string $field Nom de la cel·la a verificar
* @return
*/
public function checkUnique($data)
{
$field = array_pop(array_keys($data));
$data = array_pop(array_values($data));
// Si estem editant...
if(isset($this->data[$this->name]['id']))
{
if ($field == $this->field($field, array($this->name . '.id' => $this->data[$this->name]['id'])))
{
return true;
}
}
// Si no estem editant...
if($this->hasField($field)) {
return $this->isUnique(array($field => $data));
}
}
Llegir més…
Si habéis leído mi tutorial sobre la subida de ficheros con uploadify y validación Ajax en CakePHP recordaréis que separé los métodos add y ajax_add, ya que pensé que el único modo que había de mostrar un error de sesión al usuario era separando los métodos para, a uno de ellos darle permisos de acceso y al otro no.
De este modo podía mostrar un error de “sesión expirada” al usuario, así:
$user = $this->Auth->user();
if(!empty($user)){
// Código para añadir el elemento
}else{
$message = "<b>" . __("Error",true) . ":</b> " . __("Tu sesión ha expirado, vuelve a iniciarla por favor",true);
$data = $this->data;
$this->set('sessionTimeOut',compact('message','data'));
}
Llegir més…
Si queréis detectar las solicitudes AJAX mediante PHP podéis hacerlo mediante la variable HTTP_X_REQUESTED_WITH:
/* Verificamos si hay ajax */
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
/* Contenido ajax */
}else{
/* Contenido normal */
}
Id con cuidado porque algunos servidores no proporcionan la variable HTTP_X_REQUESTED_WITH, así que haced alguna prueba antes de ir con toda la confianza a usarlo directamente en vuestra aplicación 😉