The post CakePHP configurar fichero robots.txt appeared first on Blog Developando.
]]>Si se crea el fichero ‘robots.txt‘ en la carpeta raíz del servidor, al acceder a la url “http://midominio.com/robots.txt” se obtendrá un error de este tipo:
- Not Found
- Error: The requested address '/robots.txt' was not found on this server.
Y en el ‘error.log‘ de la aplicación CakePHP podremos ver una línea de este estilo:
- 2014-05-06 13:47:09 Error: [MissingControllerException] Controller class Robots.txtController could not be found.
Para solucionar este error únicamente hay que mover el fichero ‘robots.txt‘ a la carpeta ‘~/app/webroot/‘. Una vez movido el fichero, si se accede a la url anterior podremos ver el contenido completo del fichero ‘robots.txt’ que será consultado por los rastreadores de nuestro sitio.
The post CakePHP configurar fichero robots.txt appeared first on Blog Developando.
]]>The post CakePHP, ordenar y agrupar resultados consultas base de datos appeared first on Blog Developando.
]]>Veamos un simple ejemplo de una consulta que devuelve todas las personas que están almacenadas en una tabla de la base de datos. Para obtener todas las personas de la tabla utiliaríamos la siguiente línea:
- $this->Personas->find("all");
Con la línea anterior obtendríamos un listado con todas las personas, pero ahora lo que queremos es que este listado esté ordenado alfabéticamente. Entonces a la consulta anterior deberemos añadirle la condición ‘order’ para indicar el orden en el que serán devueltos los registros:
- $this->Personas->find("all",array('order'=>'Personas.nombre'));
Añadiendo el parámetro ‘order’ ahora los resultados serán ordenados de la ‘A’ a la ‘Z’.
Para ordenarlos de forma descendente deberemos utilizar la siguiente línea, indicando ahora ‘order DESC‘:
- $this->Personas->find("all",array('order'=>'Personas.nombre DESC'));
Los resultados serán devueltos ahora ordenados de la ‘Z’ a la ‘A’.
Si lo que se quiere es agrupar el resultado de la consulta debermos utilizar el parámetro ‘group‘:
- $this->Personas->find("all",array('group'=>'Personas.ciudad'));
Con estos dos parámetros ‘group‘ y ‘order‘ podrás agrupar y ordenar el resultado de todas tus consultas.
The post CakePHP, ordenar y agrupar resultados consultas base de datos appeared first on Blog Developando.
]]>The post CakePHP, uso de variables globales en controladores appeared first on Blog Developando.
]]>Vamos a ver un sencillo ejemplo de variable global en un controlador de CakePHP. Vamos a crear una variable que almacene el nombre de una persona, y lo utilizaremos en dos métodos diferentes del mismo controlador:
- public class MyController{
- var $nombreGlobal = "David";
- public function saludar(){
- return "Hola ".$this->nombreGlobal; // Devolverá 'Hola David'
- }
- public function despedir(){
- return "Adios ".$this->nombreGlobal; // Devolverá 'Adios David'
- }
- }
En este ejemplo vemos que se utiliza la misma variable en los dos métodos que tiene el controlador.
- class MyController {
- var $contador = 0;
- public function inciar(){
- while($this->contador < 10){
- $this->contador++;
- }
- finalizar();
- }
- public function finalizar(){
- return "Contador acabado en :".$this->contador; // Devolverá 'Contador acabado en : 10'
- }
- }
En este ejemplo tenemos un variable global que será incrementada en un método hasta llegar a un límite. Cuando se alcanza el límite, se llama a otro método que mostrará el valor con el que se ha detenido.
En el caso de querer compartir una variable entre varios controladores, lo que se debe hacer es tener un controlador ‘Padre’ del que van a heredar todos los que necesiten dicha variable.
El controlador ‘padre’ tiene la variable que será usada por el resto de controladores que hereden de él:
- class AppController {
- var $nombreGlobal = "Developando";
- }
Controladores que van a acceder a la variable global definida.
- class SaludarController extends AppController {
- public function saludar(){
- return "Hola ".$this->nombreGlobal; // Devolverá 'Hola Developando'
- }
- }
- class SaludarController extends AppController {
- public function despedir(){
- return "Adios ".$this->nombreGlobal; // Devolverá 'Adios Developando'
- }
- }
En este ejemplo vemos que en un controlador se ha definido una variable global llamada ‘nombreGlobal‘ que es utilizada por dos controladores. Para conseguir esto únicamente hemos tenido que añadir ‘extends AppController‘ en los controladores hijos y así emplear la herencia de CakePHP, y por tanto, poder acceder a dicha variable.
Estos serían un ejemplos sencillos para ver el uso de una variable global dentro de un controlador en CakePHP.
The post CakePHP, uso de variables globales en controladores appeared first on Blog Developando.
]]>The post CakePHP, ejecutar acción de controladores sin renderizar la vista appeared first on Blog Developando.
]]>Si no sigues estos pasos, cuando ejecutes la acción del controlador de CakePHP, se lanzará una excepción de este tipo, en el que se indica que no exite un fichero con la plantilla de la página a renderizar:
- Error: The view for MiFuncionController::miFuncion() was not found.
- Error: Confirm you have created the file: c:\MiApp\app\View\MIFuncion\mi_funcion.ctp
Para evitar que salte esta excepción únicamente hay que añadir la siguiente línea al final del método que ejecuta la acción del controlador de CakePHP:
- $this->autoRender = false;
A continuación mostramos un método que devolverá un mensaje pero que no cargará ninguna vista:
- public function accionSinVista(){
- $this->set('result', "Resultado de la operación.");
- // No se va a mostrar nada por pantalla, no renderizar vista
- $this->autoRender = false;
- }
Esto puede ser útil para obtener valores a través de peticiones ajax desde el navegador. Queremos que se ejecute una lógica en el servidor, pero no es necesario que se muestre una página. También podría ser útil cuando se realiza la lógica necesario y se redirecciona a otra vista.
The post CakePHP, ejecutar acción de controladores sin renderizar la vista appeared first on Blog Developando.
]]>The post Configuración de PHPMailer para envío de correos SMTP appeared first on Blog Developando.
]]>Para comenzar a utilizar PHPMailer descargar la última versión disponible aquí. Antes de comenzar vamos a diferenciar dos partes principales que se deben configurar:
Para poder enviar un correo es necesario configurar previamente un servidor SMTP. PHPMailer nos permite configurar los parámetros de este servidor en pocas líneas. Estos son algunos de los parámetros de configuración que se pueden utiilzar:
Esto traducido a líneas de código sería lo siguiente:
- <?php
- require '../class.phpmailer.php';
- try {
- // Crear una nueva instancia de PHPMailer habilitando el tratamiento de excepciones
- $mail = new PHPMailer(true);
- // Configuramos el protocolo SMTP con autenticación
- $mail->IsSMTP();
- $mail->SMTPAuth = true;
- // Puerto de escucha del servidor
- $mail->Port = 25
- // Dirección del servidor SMTP
- $mail->Host = 'miservidor.smpt.com';
- // Usuario y contraseña para autenticación en el servidor
- $mail->Username = "[email protected]"
- $mail->Password = "XXXXXXX"
- ?>
Una vez configurado el servidor SMTP se podría empezar a enviar correos. Recordad incluir la clase al principio del fichero antes de configurar nada.
Tras configurar el servidor SMTP, el siguiente paso es crear el correo que se quiere enviar. PHPMailer nos permite crear estos correos indicando lo sigiuente:
Empecemos por configurar los datos del remitente del correo. Pare ello hay que utilizar dos líneas:
- // Dirección de correo del remitente
- $mail->From = "[email protected]";
- // Nombre del remitente
- $mail->FromName = "Mi nombre y apellidos";
El siguiente paso es indicar el o los destinatarios:
- $mail->AddAddress("[email protected]","Nombre 1");
- $mail->AddAddress("[email protected]","Nombre 2");
- ...
- $mail->AddAddress("[email protected]","Nombre n");
- $mail->AddCC("[email protected]","Nombre copia 1");
- $mail->AddBCC("[email protected]","Nombre copia 1");
Configurar el asunto del mensaje:
- $mail->Subject = "Asunto del correo";
Una vez hemos configurado las cabeceras del correo, hay que rellenarlo con el contenido que se quiere enviar. Para añdir el cuerpo del mensaje:
- // Creamos en una variable el cuerpo, contenido HMTL, del correo
- $body = "Proebando los correos con un tutorial<br>";
- $body .= "hecho por <strong>Developando</strong>.<br>";
- $body .= "<font color='red'>Visitanos pronto</font>";
- // Añadimos el contenido al mail creado
- $mail->Body = $body;
Si necesitases enviar algún fichero adjunto al mensaje se debe utilizar el siguiente método que recibe dos parámetros que son la ruta del fichero a enviar, y el nombre que se mostrará en el correo:
- $mail->AddAttachment("misImagenes/foto1.jpg", "developandoFoto.jpg");
- $mail->AddAttachment("files/proyecto.zip", "demo-proyecto.zip");
En este punto del tutorial ya tendríamos tanto las cabeceras como el cuerpo del mensaje configuradas. Ahora habría que hacer una llamada a la función ‘send()‘ para su envío:
- $mail->Send();
Aquí os dejamos el contenido completo del código utilizado en este tutorial:
- <?php
- require '../class.phpmailer.php';
- try {
- // Crear una nueva instancia de PHPMailer habilitando el tratamiento de excepciones
- $mail = new PHPMailer(true);
- // Configuramos el protocolo SMTP con autenticación
- $mail->IsSMTP();
- $mail->SMTPAuth = true;
- // Configuración del servidor SMTP
- $mail->Port = 25
- $mail->Host = 'miservidor.smpt.com';
- $mail->Username = "[email protected]"
- $mail->Password = "XXXXXXX"
- // Configuración cabeceras del mensaje
- $mail->From = "[email protected]";
- $mail->FromName = "Mi nombre y apellidos";
- $mail->AddAddress("[email protected]","Nombre 1");
- $mail->AddAddress("[email protected]","Nombre 2");
- $mail->AddCC("[email protected]","Nombre copia 1");
- $mail->AddBCC(“copia1@correo.com”,”Nombre copia 1″);
- $mail->Subject = "Asunto del correo";
- // Creamos en una variable el cuerpo, contenido HMTL, del correo
- $body = "Proebando los correos con un tutorial<br>";
- $body .= "hecho por <strong>Developando</strong>.<br>";
- $body .= "<font color='red'>Visitanos pronto</font>";
- $mail->Body = $body;
- // Ficheros adjuntos
- $mail->AddAttachment("misImagenes/foto1.jpg", "developandoFoto.jpg");
- $mail->AddAttachment("files/proyecto.zip", "demo-proyecto.zip");
- // Enviar el correo
- $mail->Send();
- ?>
Siguiendo este tutorial ya deberías ser capáz de configurar los parámetros del servidor de correo SMTP y de crear y enviar un correo en PHP.
Agradecemos que nos dejéis vuestros comentarios con dudas, críticas o sugerencias para mejorar el contenido.
The post Configuración de PHPMailer para envío de correos SMTP appeared first on Blog Developando.
]]>