Showing posts with label PHP. Show all posts
Showing posts with label PHP. Show all posts

Sunday, March 16, 2008

Cambiar Dinamicamente el Titulo del Modulo en Symfony

En Symfony cada Modulo puede tener un titulo configurado en el archivo 'modulo/config/view.yml' de la siguiente forma: default:   http_metas:     content-type: text/html metas:   title: Productos   robots: index, follow   description: Administracion de Productos   keywords: Administrar Productos Articulos   language: es Sin embargo el mismo titulo para todo el modulo puede causar dolores de cabeza al usuario del sitio web cuando tiene muchas ventadas a diferentes acciones de un mismo modulo por lo que considero bueno cambiarlo dinamicamente de acuerdo a la accion, esto se hace usando la funcion setTitle del sfWebResponse como sigue:  $this->getResponse()->setTitle('Producto - ' .$this->product->getName()); Ejemplo: public function executeShow() {   &this->product = ProductPeer::retrieveByPk($this->getRequestParameter('id'));   $this->forward404Unless($this->product);   $this->getResponse()->setTitle('Producto - ' .$this->product->getName()); } Bien Sencillo :)

Wednesday, January 9, 2008

Mover Proyecto Symfony de Ubuntu a Redhat

Actualmente estoy trabajando con PHP Symfony y instalado un proyecto en Redhat que fue generado y construido en Ubuntu por lo que al instalar el symfony usando pear(al igual que ubuntu) la ruta de los archivos de symfony es diferente y al ejecutar cualquier comando de symfony('symfony cc' por ejemplo) ocurren errores al hacer los includes. Ejemplo: jhernandez@POSEIDON-LINUX:~/WebApps/$ symfony cc Warning: include(/usr/share/pear/data/symfony/bin/symfony.php): failed to open stream: No such file or directory in /usr/bin/symfony on line 39 Warning: include(): Failed opening '/usr/share/pear/data/symfony/bin/symfony.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /usr/bin/symfony on line 39 Esto sucede porque el archivo config/config.php apunta a una direccion de los archivos de symfony invalida. En Ubuntu por ejemplo, el archivo config/config.php debe verse similar a este: // symfony directories $sf_symfony_lib_dir = '/usr/share/php/symfony'; $sf_symfony_data_dir = '/usr/share/php/data/symfony'; En Redhat por ejemplo, el archivo config/config.php debe verse similar a este: // symfony directories $sf_symfony_lib_dir = '/usr/share/pear/symfony'; $sf_symfony_data_dir = '/usr/share/pear/data/symfony'; Esto se debe a que el PEAR instala los archivos de php symfony en diferentes rutas de acuerdo a la distribucion. Solo es cuestion de corregirlo para que el problema se solucione.

Thursday, October 18, 2007

PHP ERROR: Call to undefined function pg_connect()

Cuando este error sucede quiere decir que no tienes instalado la extension de PostgreSQL-PHP que permite hacer consultas a bases de datos PostgreSQL desde PHP. Para resolverlo en Ubuntu se debe instalar el paquete "php5-pgsql". En linea de comandos es asi: $sudo aptitude install php5-pgsql Despues procedemos a reinicar el servidor apache de la siguiente forma: $sudo aptitude /etc/init.d/apache2 restart Listo, ahora reintenta otra vez usar la aplicacion PHP que te arrojo la falla.

Monday, May 21, 2007

DataConnection.php (PHP ADO.NET)

Estoy trabajando actualmente en un proyecto en PHP5/PostgreSQL8 y la verdad que odio la programacion funcional asi que en lo posible he encapsulado el acceso a datos a la base de datos usando las siguientes funciones pg_connect, pg_exec, pg_cmdtuples, pg_close, pg_numrows y pg_fetch_row en las siguientes clases:
  • DataCommand
    • Open: void
    • ExecuteNonQuery : int
    • ExecuteReader : DataReader
    • Close
  • DataReader
    • Read
    • GetField
Lo hice lo mas parecido a ADO.NET porque es el model de acceso a datos de costumbre para mi. La hice en 30 Minutos y probablemente despues deba refinarla, por ejemplo cambiar el metodo Open de void a bool o causar una exception en el caso de conexion fallida pero aun estoy buscando como hacer un buen registro de errores. Asi es como lo estoy usando: ExecuteNonQuery("INSERT INTO tabla1(id,name) values(nextval('tabla1_seq'),'Valor')") . " Insertados "; $cmd = NULL; $cmd = ConnectData(); $reader = $cmd->ExecuteReader("Select Id from tabla1"); while($reader->Read()) { echo $reader->GetField(0) . " "; } $reader = NULL; $cmd = NULL; echo "HELLO PHP"; ?> Ambas clases tienes destructores para eliminar los datos no utilizados lo mas rapido posible. En fin es solo un ejercicio que despues pienso utilizar produccion y encuentro la sintaxis del lenguage y su perfomance bastante aceptables. Lo cierto es que estamos usando PHP despues de darnos un gran golpe usando Mono/XSP 1.2.3 [Descargar DataConnection.php]