Por todos lados habran leido que Netbeans traerá soporte para Netbeans en su próxima versión, bueno, la gente del equipo de desarrollo de NB realizó un screencast para demostrar su nueva Feature. Sin mas rodeos los dejos con lo prometido.
Archive for the ‘Symfony’ Category
Screencast – Soporte para Symfony en NB
Tuesday, November 3rd, 2009Rich Text Editor en Symfony 1.2
Saturday, January 17th, 2009Estoy embarcado en un proyecto donde estoy utilizando Symfony, como lo empece hace un mes aproximadamente decidí implementarlo con la última versión , por obvias razones. Bueno la cosa es que los cambios de la versión 1.2 son notorios, muchas formas de hacer las cosas han cambiado, pero siempre para bien, una de ellas es la forma de utilizar el control para texto enrriquecido, después de buscar y buscar (cosa que se re complica dado los cambios de versiones, no sabes a que se refieren las discusiones en los foros :S ) encontre una forma de hacerlo, dejo aquí los pasos para que los lectores no pierdan tanto tiempo cuando quieran intentarlo.
Paso 1
Descargar Tiny_MCE ( es posible usar FCK Editor y otros, yo elegí este):
http://ufpr.dl.sourceforge.net/sourceforge/tinymce/tinymce_3_2_1_1.zip
Dejenlo la carpeta descomprimida, mas justamente la que dice tiny_mce dentro de javascripts, en el directorio, web/js/tiny_mce/.
Paso 2
Añadir el script en la aplicación que desean que utilizé este control, para ello deben ir a suapp/config/view.yml y añadir la entrada a su linea de scripts
javascripts: [tiny_mce/tiny_mce.js]
Paso 3
Instalar sfFormExtraPlugin, este posee el widget para el texto enrriquecido, mediante el siguiente comando.
symfony plugin:install sfFormExtraPlugin –release=1.0.7
Paso 4
Customizar el form donde desean el texto enrriquecido, para esto debe ir a lib/form/ y buscar el Form que desean modificar y en el metodo configure añadir esta linea
Donde
Paso 5
Este paso tube que hacerlo por que aparentemente el plugin posee alguna clase de error, dado que no toma el parametro correspondiente a la class, para ello modifique el source del plugin, deben ir a plugin
sfWidgetFormTextareaTinyMCE.class.php cambiar las primeras lineas del metodo render de tal manera que no arroje la exception y en cambio ponga por defecto la clase tiny_mce (una solución rá

Problemas que pueden surgir, principalmente que pongan mal los paths al script tiny_mce.js, verifiquen.
Symfony 1.2.2
Saturday, January 10th, 2009En un solo día de trabajo, la gente del proyecto Symfony arreglaron más de 40 bugs hallados en la versión 1.2.1. Los errores corregidos estaban relacionados principalmente con la generación de la parte de administración y la interacción con doctrine.
Como siempre, para actualizar tu versión de Symfony:
- Si usas el sandbox, te lo tienes que bajar otra vez.
- Si lo has instalado mediante PEAR, ejecuta el comando
pear upgrade symfony/symfony-1.2.2 - Si lo instalas mediante Subversion, ejecuta el comando
svn checkout http://svn.symfony-project.com/tags/RELEASE_1_2_2/ .
Independientemente de cómo lo actualices, no olvides borrar la caché de cada proyecto después de la actualización y volver a generar los formularios y las clases del modelo.
Si utilizas Doctrine como ORM:
$ php symfony doctrine:build-model $ php symfony doctrine:build-forms $ php symfony doctrine:build-filters $ php symfony cache:clear
Si utilizas Propel como ORM:
$ php symfony propel:build-model $ php symfony propel:build-forms $ php symfony propel:build-filters $ php symfony cache:clear
Fuente:
http://www.symfony-project.org/blog/2009/01/08/symfony-1-2-2-doctrine-service-release
Soporte para Symfony en Netbeans 7.0
Monday, November 17th, 2008Últimamente mí vida profesional tomo un vuelco, después de pensar que el desarrollo de sistemas era mi vida y que deseaba ser un programador empedernido dije basta y me revele, cambié totalmente mi perspectiva laboral, de ahora en más pretendo dedicarme a la administración de sistemas GNU/Linux en un nivel de aplicación y conectividad lógica. Por que este cambio tan abrupto, bueno básicamente me cansé de la realidad laboral del desarrollador, algunas de las cuestiones que me saturaron fueron:
- Pocos nuevos proyectos, mucho mantenimiento
- Poco apoyo al departamento de desarrollo por parte de las organizaciones, el programador siempre tiene la culpa.
- Falta de definición de roles en los proyectos, por esta zona el desarrollador prácticamente realiza todos los roles, desde vender el proyecto, analizar, diseñar, programar y hacer de help desk, todo por la misma plata.
- El 90% de los desarrollos son aplicaciones de gestión, y al finalizar el desarrollo terminas sabiendo mas contabilidad que de sistemas.
- Te encontras con cada código que decís, WTF?!, un niño de 10 años lo escribió ?
- El 90% de los desarrollos son bajo windows, cosa que odio utilizar.
- Usuarios totalmente incompetentes
Igualmente continuo desarrollando por que me encantan hacerlo, pero lo hago para mí o para mi trabajo como sysadmin, no desarrollo más aplicaciones profesionalmente (al menos que se pongan con la tarasca, “Lo que falta son inversionistas” Ricardo Darin – 9 reinas).
Un framework que vengo utilizando desde hace algún tiempo es Symfony, la verdad que es una animalada y si bien hay muchos que hacen cosas similares, para mí es el mas pulido. No deja de sorprenderme lo fácil que te hace hacer las cosas y como te obliga a desarrollar de la mejor manera, sin dudas los muchachos de Sensio Labs saben muuuucho de PHP.
Acabo de enterarme que Netbeans para PHP incluira soporte para symfony en su versión 7.0. Todo esto producto a una votación que realizaron los desarrolladores de Netbeans en la comunidad. En dicha votación te hacían elegir un framework al cual deseabas que Netbeans tenga soporte, algunas de las otras opciones eran:
- Prado
- CakePHP
- CodeIgniter
- Zend
El ganador de la votación fue symfony con 459 votos, arrazador.
Esperaré con ansias la próxima versión de Netbeans.
Texto enrriquecido en Symfony
Wednesday, August 27th, 2008Symfony es un framework para PHP que integra varios otros frameworks del mercado y que agiliza mucho el desarrollo de aplicaciones por la módica suma de un largo proceso de aprendizaje.
Actualmente estoy haciendo un pequeño site para mí, algo más serio que este blog para mostrar el lado profesional. La cuestión es que tiene una sección de noticias la cual estaba deseando que se pueda editar a las mismas de una manera sencilla y lo mas visual posible. Para ello symfony integra un mecanismo de tal manera que se pueda utilizar el conocido editor TinyMCE. Aquí les muestro rápidamente como utilizarlo.
Primero deben descargar el editor desde su site oficial:
Luego una vez descargado, deben descomprimir el zip, una vez realizada la descompresion les quedará una carpeta llamada tinymce, dentro de esta deben copiar la carpeta jscripts/tiny_mce y pegarla en el directorio SF_ROOT_DIR/web/js (donde SF_ROOT_DIR es el directorio de su proyecto symfony).
Una vez realizado esto, en su aplicación deben definir la librería de TinyMCE, para ello deben ir al archivo settings de su aplicación y en la sección all->settings añadir rich_text_js_dir: js/tiny_mce, les debería quedar algo así
all:.settings: rich_text_js_dir: js/tiny_mce
Esto debe hacerse por cada aplicación del proyecto.
Por último deberán definir en la configuración del generador del modulo que contiene el atributo que desean editar con texto enriquecido que utilice justamente texto enriquecido. Para ello en app/appname/modulo/config/generator.yml deberán añadir en la sección fields para ese atributo que se le añada el parámetro rich=true, les quedaría algo así:
generator:
class: sfPropelAdminGenerator
param:
model_class: Noticias
theme: default
edit:
title: Editar Noticia
display: [Titulo, Noticia, Idautor]
fields: noticia: { params: rich=true }
Al final les quedará algo así de lindo en su navegador:
Cualquier duda pueden consultar el manual de symfony.
Dos de Symfony por una peso
Tuesday, May 6th, 2008
Tengo preparado dos tips para los usuarios de symfony, espero que les sea de ayuda en sus de desarrollos con esta excelente herramienta.
El primero es para Exportar una consulta a una planilla excel. Para ello deben crear un método en module/modulename/actions/action.php del modulo al cual pretenden realizar la consulta, en este caso a la acción la llame executeExcel y el modulo se llama autorizaciones.
En la acción lo primero que hago es recuperara los filtros que selecciono el usuario en la vista de lista del modulo autorización (Se supone que los resultados de dicha vista son los que se desean exportar).
Luego Realizamos la consulta y al traer los registros lo procesamos uno por uno de tal manera que queden en una sola variable string, cada campo separado por una como y al final un retorno de carro, esto con el fin de que quede un archivo del tipo CSV (Comma Separated Values), formato que excel entiende a la perfección para importar. Dicha variable la vamos guardando en un archivo temporal el cual posteriormente sera enviado al cliente para que lo descargue.
Por último debemos redireccionar la vista a NONE con el fin de que no se envie ninguna información después de descargar el archivo.
El código completo es el siguiente.
public function executeExcel() {
//Recuperamos los Filtros
$this->processSort();
$this->processFilters();
$this->filters = $this->getUser()->getAttributeHolder()->getAll(’sf_admin/autorizaciones/filters’);
//Hacemos la Consulta
$c = new Criteria();
$this->addSortCriteria($c);
$this->addFiltersCriteria($c);
$autorizaciones = AutorizacionesPeer::doSelect($c);
//Creamos el archivo temporal de exportación
$file = “autorizaciones-exporta.csv”;
$fh = fopen($file,”w+”) or die (”unable to open file”);
//Cabecera – Cambienla por sus necesidades
$row = “\”Codigo\”,”; $row .= “\”Sucursal\”,”;
$row .= “\”Vendedor\”,”; $row .= “\”Motivo\”,”;
$row .= “\”Comentario\”,”; $row .= “\”Autorizado por\”,”;
$row .= “\”Deteriorado\”,”; $row .= “\”Cod. Articulo\”\n”;
fwrite($fh,$row);
//Procesamos cada línea
foreach($autorizaciones as $aut){
$row = “\”".$aut->getCodigo().”\”,”;
$row .= “\”".$this->getSucursalName($aut->getIdSucursal()).”\”,”;
$row .= “\”".$this->getVendedorName($aut->getIdVendedor()).”\”,”;
$row .= “\”".$this->getMotivoName($aut->getIdMotivo()).”\”,”;
$row .= “\”".$aut->getComentario().”\”,”;
$row .= “\”".$aut->getUsuario().”\”,”;
$row .= “\”".$aut->getDeteriorado().”\”";
$row .= “\”".$aut->getCodArticulo().”\”\n”;
fwrite($fh,$row);
} fclose($fh);
//Enviamos la cabecera HTML para que ejecute la descarga y el browser lo identifique
// como un elemento Excel
header(”Content-Type: application/vnd.ms-excel”);
header(”Content-Type: application/force-download”);
header(”Content-Transfer-Encoding: binary”);
header(”Content-Disposition: attachment;filename=”.$file );
header(”Content-Length: “.filesize($file));
header(”Pragma: no-cache”);
header(”Expires: 0″);
readfile($file);
//Tiramos la vista a NONE
return sfView::NONE;
}
La sugunda cosa que tengo para contarles es sobre la internacionalización de las aplicaciones con symfony. Para pasar al español los elementos generádos con CRUD deben configurar apropiadamente los archivos
apps/nombrapp/config/settings.yml
Poner la variable i18n en on, sobre la sección all, de tal manera que se aplique a todos los entornos del proyecto.
i18n: on
Tambien el archivo
apps/nombrapp/config/i18n.yml
En el cual se define la cultura, y el formato de definición del archivo
all:
default_culture: es
source: XLIFF
debug: off
cache: on
untranslated_prefix: “[T]“
untranslated_suffix: “[/T]“
El último paso es crear el archivo messages.
Dicho archivo debe parecerce a este:
Una vez que terminan lo guardan y al entrar al site deberían ver todo en el idioma seleccionado, en el ejemplo español.
