Arxiu

Entrades etiquetades ‘CakePHP’

Errores 404 con Ajax (y jQuery) en CakePHP

dissabte, 10 de juliol de 2010 Comentaris desactivats

En este tutorial aprenderéis a gestionar los errores de CakePHP con y sin Ajax.

Lo primero de todo que tenéis que hacer es poner el debug a cero en vuestro fichero core.php, ya que con debug > 0 no funcionaría.

Ahora pasemos a crear (si no existe) el fichero /app/app_error.php con el siguiente contenido.

<?php // /app/app_error.php
class AppError extends ErrorHandler
{
	function error404($params)
	{
		// Importamos RequestHandler para verificar si la conexión es mediante Ajax
		App::import('Component', 'RequestHandler');
		$this->RequestHandler = new RequestHandlerComponent();
		if ($this->RequestHandler->isAjax())
		{
			// En caso de ser Ajax creamos la cabecera 404
			$this->controller->header("HTTP/1.0 404 Not Found");
			// y pasamos algunas variables a la vista que ahora crearemos
			$this->controller->set('params', $params);
			$this->controller->layout = 'ajax';
			// Renderizamos la vista
			$this->_outputMessage('ajax_error404');
		}
		// Aquí iría la gestión del error sin Ajax, en nuestro caso llamamos al método padre.
		else parent::error404($params);
	}
}

Pasemos a la creación de la vista… /app/views/errors/ajax_error404.ctp Llegir més…

Watermark & Image Component for CakePHP

dimarts, 6 d'abril de 2010 6 comentaris

Note: This Component has been updated and you can find the changes here: /2011/04/clase-php-para-tratar-imagenes-rotar-redimensionar-anadir-marcas-de-agua/

Time ago I created a CakePHP component for applying watermarks to images. Slowly I extended it and now in addition to applying watermarks is used to rotate and resize images.

You can still improve it a lot, especially in terms of code, but as it works and I have little time, I can barely make improvements.

Tested from:

  • Linux php 5.2.10
  • Linux php 5.2.13
  • Windows php 5.3.1
  • Windows php 5.3.2

Well Known Bugs:

  • Uses the method mime_content_type that as they say in php.net: This function has been deprecated as the PECL extension Fileinfo provides the same functionality (and more) in a much cleaner way. [ SOLVED ]
  • By rotating a transparent PNG image at an angle that is not a multiple of 90º the extra generated background is not transparent.

Download:

http://github.com/elboletaire/Watimage/archives/master

Llegir més…

Categories: Programació, Web Etiquetes:, , , ,

Validar datos duplicados en CakePHP

dijous, 25 de febrer de 2010 5 comentaris

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…

Categories: Programació, Web Etiquetes:, , , ,

Integrando CakePHP y phpBB 3.x

dissabte, 23 de gener de 2010 6 comentaris

Ocultar

Antes de empezar…

Más o menos al empezar con este blog expliqué cómo podíais hacer un registro de usuarios externo a phpBB3 con PHP. Hoy voy a contaros cómo hacer para implementar el registro y login de usuarios de phpBB3 en CakePHP.

Podéis ver, como ejemplo, la página de underave. Pero os pido por favor que no os registréis si no vais a utilizar la cuenta.

Antes de empezar con el tutorial, por favor, leeros el tutorial anterior sobre el registro de usuarios externo a phpBB3, ya que habrá ciertos aspectos que pasaré por alto por estar explicados en ese tutorial.

Además de miraros ese tutorial deberíais echar un vistazo a la documentación del componente Auth, ya que sin él el registro de usuarios sería otra cosa…

Como siempre, empiezo con lo que he utilizado para llevar a cabo el tutorial…

  • CakePHP (v. 1.2.4.8284 [1.2.5 stable])
  • phpBB 3.0.2
  • Componente de integración de phpBB3 (que ahora crearemos)

Aunque yo haya utilizado la versión 3.0.2 de phpBB, debéis saber que este sistema debe funcionar igual de bien en cualquier versión de phpBB 3 😉

Parto de la base de que tenéis creado un modelo y un controlador encargados de gestionar los usuarios de vuestra aplicación Cake. En mi caso los he llamado “users“, aunque podéis llamarlos “usuarios”, “members“, o como os dé la gana.

Es decir, doy por supuesto que ya tenéis un sistema de usuarios funcionando en vuestra aplicación CakePHP. En este tutorial sólo os explicaré cómo integrar el registro y login de phpBB3, así que todo lo demás (validaciones de datos, creación de formularios, funcionamiento de la clase Auth…) quedará por supuesto (lo cual no quiere decir que no vaya a haber código al respecto ;)).

Llegir més…

CakePHP Auth Component ajaxLogin

diumenge, 27 de desembre de 2009 Comentaris desactivats

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…

Categories: Programació, Web Etiquetes:, , ,