viernes, 19 de abril de 2013

Spool Symfony2.1 - encolar mails

a) Configurar config.yml

# app/config/config.yml
swiftmailer:
    # ...
    spool:
        type: file
        path: /path/to/spool

path: "%kernel.root_dir%/spool"

b) Crear una carpeta en app/spool, lugar en donde se van a alojar los mails encolados.

b) Crear cron con el que envia los mails encolados:

 php app/console swiftmailer:spool:send


Fuente: Tutorial oficial Symfony 2

jueves, 18 de abril de 2013

Problemas de contexto en Servidores Web Linux - Error: DocumentRoot do not exists

Un problema que creo muchos van a tener al momento de usar composer para instalar Symfony 2.x, es al momento de crear un virtual host y apuntar a la carpeta web. El error es algo parecido a "DocumentRoot do not exists".

Es decir que apache no encuentra nuestra carpeta web, esto es un problema de contexto y se resuelve primero revisando el contexto y dando el contexto adecuado.

Para revisas, el comando:

ls --context

Y para asignarle el contexto adecuado usas el comando:

chcon -t httpd_sys_content_t /carpeta/de/miproyecto -R

jueves, 14 de marzo de 2013

Generador de Valores Hexadecimales - PHP

function RandomString($length=10,$uc=TRUE,$n=TRUE,$sc=FALSE)
    {
        $source = 'abcdef';
        if($uc==1) $source .= 'ABCDEF';
        if($n==1) $source .= '1234567890';
        if($sc==1) $source .= '|@#~$%()=^*+[]{}-_';
        if($length>0)
        {
            $rstr = "";
            $source = str_split($source,1);
            for($i=1; $i<=$length; $i++)
            {
                mt_srand((double)microtime() * 1000000);
                $num = mt_rand(1,count($source));
                $rstr .= $source[$num-1];
            }

        }
        return $rstr;
    }

viernes, 28 de diciembre de 2012

Proceso de creacion de CRUD en Symfony2

Proceso de desarrollo:

0- Eliminar contollers, toda la carpeta entity, toda la carpeta form, resource/routing, Resource/view/*

1- Diseño db en Mysql Workbench

2- Impactar sobre BD

3- php app/console doctrine:mapping:import PaqueteBundle annotation

Para generar una entidad: php app/console doctrine:mapping:import AdminBundle annotation --filter="Modulos"

4- php app/console doctrine:generate:entities PaqueteBundle

   php app/console doctrine:generate:entities MyCustomBundle:User
   php app/console doctrine:generate:entities MyCustomBundle/Entity/User

5- php app/console doctrine:generate:crud

Nota: si es una entidad user o role, hacer extend de clases 

Luego nos solicita si deseamos crear las opciones de escritura, le decimos “y” (sí), formato del CRUD: annotation, y finalmente en el Routes prefix colocamos /admin/role, este paso es importante porque a la ruta le asignamos el prefijo /admin para que nos permita empatar luego con el access_control, confirmamos y aparecerá el mensaje “You can now start using the generated code!”

crear esquema de seguridad
http://www.maestrosdelweb.com/editorial/curso-symfony2-seguridad-de-acceso/

Comandos:

  • php app/console doctrine:mapping:import AcmeBlogBundle annotation
  • php app/console doctrine:generate:entities AcmeBlogBundle

sábado, 24 de noviembre de 2012

Paquetes a instalar - MySQL - PHP - Apache - Centos


Cosas fundamentales para cuando se instala mysql php y apache por separado:
  • MySQL (php-mysql) – A extension for PHP applications that use MySQL databases.
  • PostgreSQL (php-pgsql) – A extension for PostgreSQL database for PHP.
  • MongoDB (php-pecl-mongo) – A driver for MongoDB database.
  • SQLite (php-sqlite) – Extension for SQLite Database Engine.
  • Memcache (php-pecl-memcache) – Memcached caching daemon.
  • Memcached (php-pecl-memcached) – Memcached caching daemon.
  • GD (php-gd) – GD extension for PHP application to serve graphics.
  • XML (php-xml) – XML Parser for PHP applications.
  • MBString (php-mbstring) – Mbstring extension is used to handle multi-byte string in PHP applications. 
  • MCrypt (php-mcrypt) – A Mcrypt library for PHP scripts.
  • APC (php-pecl-apc) – APC module used to optimize and cache PHP code.
  • CLI (php-cli) – Command-line interface for PHP.
  • PEAR (php-pear) – Application Repository framework for PHP.
  • PDO (php-pdo) – Database access module for PHP applications.
  • mcrypt - rpm -Uvh http://dl.fedoraproject.org/pub/epel/5/i386/php53-mcrypt-5.3.3-1.el5.i386.rpm

miércoles, 14 de noviembre de 2012

Instalación Symfony2 - Centos 6 - Problemas

En esta oportunidad voy a describir un problema que tuve al iniciar un nuevo proyecto en symfony2 sobre centos 6.

Problema 1:

Error con los host virtuales y permisos en el contexto de ejecución: Warning: DocumentRoot [/var/ ...] does not exist

Solución 1:

La manera en que descomprimimos symfony para ser usado. La manera correcta es hacerlo mediante la consola de la siguiente manera:

$ tar zxvf Symfony_Standard_Vendors_2.0.18.tgz

y luego

chown root:root symfony

Problema 2:

Otro problema que se presenta es, al momento de chekear si la instalacion de symfony2 es correcto, nos da:

php app/check.php
PHP Fatal error:  Class 'DOMDocument' not found in /var/www/html/Symfony/vendor/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php on line 214
Fatal error: Class 'DOMDocument' not found in /var/www/html/Symfony/vendor/symfony/src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php on line 2

Solución 2:

yum -y install php-xml

Salvadora:

yum install php-pdo 
yum install php-mbstring

lunes, 12 de noviembre de 2012

Google Maps - Utilidades

Quitar el shadow de InfoWindow:

<style type="text/css">
#map_canvas { height: 100% }
img[src*="iws3.png"] {display: none;}
</style>

Redimensionar una imagen con librerias nativas de Google Maps:

var icon = new google.maps.MarkerImage("http://domain/path/image.png", null, null, null, new google.maps.Size(64, 64));

Pegar una estiqueta de tipo html sobre google maps en una posicion determinada o en asociada a un marker, se debe hacer uso de una librería label.js y asociarla al marker e la siguiente manera:

var label = new Label({
   map: map
});
label.bindTo('position', marker, 'position');
label.bindTo('text', marker, '$ '+recomendacion.precioFinal.toString());
marker.label = label;