The blog of COil : PHP, symfony & Web 2.0

Strangebuzz...?

Réduire au titre / collapse all

02/05/2008

» PHP_Debug V2.1.3 released

This is just a small update to correct and close minor bugs that were on the Pear bug tracker. I have also finally added the sources on the php csv server. The last step will be to do the end user documentation in the DocBook format so it can be available in the official pear documentation.

:)

03/04/2008

» symfony tutorial : Extending the admin generator

[En] Tutorial content:

  • Creating a plugin with a custom admin generator theme
  • Extending the sfActions class
  • Extending the sfPropelAdminGenerator class


Here is little contribution for the symfony code sprint, a symfony tutorial about the admin generator. :) Do you know about it ? I think it's one of my favourite symfony tool, i have developed several applications with symfony and for 75% of them i have made a custom admin generator theme. And as said in the symfony documentation, the admin generator is very very very powerful. ;)
In this tutorial we will see a concrete example on how to extend it to provide a useful new feature. Witch feature ? Well it was one of the things a customer asked me, "I want to be able to delete several rows at a time with check boxes" ... Ahhhhh indeed, it's not a native feature of the admin generator. So.... let's do it... :)

::: Pre-requisite :::


Well i will not explain here how to install symfony as there are lots of tutorials about this on the symfony website and in the wiki. So i will assume you have a clean symfony installation so you can type the symfony command in cli. I used the 1.0.13 version for this tutorial.

::: Creating and setting a new project :::


:: Creating the new project ::


First we will create the new project that we will call tutorial, create a new folder tutorial and launch the init-project task into it.

symfony init-project tutorial

Now let's create the backend application:

symfony init-app backend

As it is always better to have a submain for our application add the following in you apache httpd.conf file and change it with your own path

## COil symfony tutorial n°1 : Extending the admin generator ##

<VirtualHost *:80>
  ServerName dev.tutorial.com
  DocumentRoot "C:\wamp\www\tutorial\web"
  DirectoryIndex index.php
  Alias /sf "c:\wamp\bin\php\php5.2.5\PEAR\data\symfony\web\sf"
  
  <Directory "C:\wamp\www\tutorial\web">
    AllowOverride All
  </Directory>
</VirtualHost>

Add the sub-domain in you hosts file:

127.0.0.1 dev.tutorial.com

Ok, at this point we should have our "Project created!" page. So Let's try to browse http://dev.tutorial.com/backend_dev.php

tuto1-1


:: The database ::


Create a local database, let's call it tutorial again. (same as the project name)
Modify the database settings in the config/database.yml and config/propel.ini file, your database.yml file should look like this:

all:
  propel:
    class:          sfPropelDatabase
    param:
      dsn:          mysql://root@localhost/tutorial


Now we need a schema, let's take the one of Askeet


Ok now let's try to build the database:

symfony.bat propel-build-all-load backend

Oops, it seems there are some errors. :) As we are quite lazy just delete the password columns and the QuestionTag section of the /datas/fixtures/test_data.yml file.
Let's try again to run the last command. If your are successful you should now have some tables and data in your tutorial database. If not, you probably missed something. ;) At this point we have a valid application with a database, some tables and fixtures. Settings are ok, so can go to the next step.

...

Lire la suite / read all

25/03/2008

» symfony : traduction FR de la cheatsheet Ajax

[FR] J'avais traduis il y a quelque temps la cheatsheet sur les helpers ajax realisée par Andréia Bohner. En fait il ne m'avait pas répondu très vite donc elle était un peu tombée aux oubliettes. J'avais fais cette traduction un peu vite fait et mot à mot donc le résultat n'est pas tip-top. :/ Donc si vous avez des propositions de modifications à n'hésitez pas, je peux les regrouper et envoyer la mise à jour à Andréia. Sinon ça pourra toujours servir à quelqu'un ne parlant pas un mot d'anglais ni de portugais. ;)

Traduction française de la cheatsheet ajax symfony



18/03/2008

» Symfony tip : Registration of plugin routes

[En] Here is a little tip Fabien gave me. I am actually developing a plugin witch has quiet a lot of routes (about 40). Normally you can add the routes with the prependRoute function, like does the sfGuardplugin.

<?php
if (sfConfig::get('app_sf_guard_plugin_routes_register', true) && in_array('sfGuardAuth', sfConfig::get('sf_enabled_modules', array())))
{
  $r = sfRouting::getInstance();
 	
  // preprend our routes
  $r->prependRoute('sf_guard_signin', '/login', array('module' => 'sfGuardAuth', 'action' => 'signin'));
  $r->prependRoute('sf_guard_signout', '/logout', array('module' => 'sfGuardAuth', 'action' => 'signout'));
  $r->prependRoute('sf_guard_password', '/request_password', array('module' => 'sfGuardAuth', 'action' => 'password'));
}
?>


But for each prependRoute call an array_merge is done on all existing routes.

<?php
  /**
   * Adds a new route at the beginning of the current list of routes.
   *
   * @see connect
   */
  public function prependRoute($name, $route, $default = array(), $requirements = array())
  {
    $routes = $this->routes;
    $this->routes = array();
    $newroutes = $this->connect($name, $route, $default, $requirements);
    $this->routes = array_merge($newroutes, $routes);
 
    return $this->routes;
  }
?>


So the tip here is to save all routes, clear them, add the routes of the plugin and then append the saved routes. Witch can be done like this:

<?php
  // Save and clear all routes
  $r = sfRouting::getInstance();
  $routes = $r->getRoutes();
  $r->clearRoutes();
  
  // Plugin home
  $r->connect('plugin_home', '/my_super_plugin/homepage', array(
    'module' => 'my_plugin_module', 
    'action' => 'my_plugin_action',
    'additional_parameter'   => 1
    ));
 
  // Another route
  $r->connect('plugin_home', '/my_super_plugin/section1', array(
    'module' => 'my_plugin_module', 
    'action' => 'my_plugin_action_section1',
    'additional_parameter'   => 2
    ));
 
  // ... other routes
 
  // Then merge new routes with the saved one
  $r->setRoutes($r->getRoutes() + $routes);
?>


That's it. :) Of course it is always better to have all routes of the application in the routing.yml but in my case it was not possible.

02/03/2008

» sfLightboxPlugin 1.0.6

[En] New version with the last version of lightbox (2.03.3) + new helpers. You can check the demo here on my blog.

  • Updated lightbox library to v2.03.3
  • 3 new helpers (light_image_text, light_slide_image, light_slide_text)
  • New parameter for images slideshows to allow to display images as a html list (li..)
  • Slideshow navigation with the keyboard (left, right, ESC)


Thanks for your feedback ! Enjoy. :)



[Fr] Nouvelle version incluant la dernière version de lightbox (2.03.3) et quelques nouveaux helpers. Vous pouvez visualiser la demo ici sur mon blog.

  • Mise à jour de la librairie lightbox pour la version v2.03.3
  • 3 nouveaux helpers (light_image_text, light_slide_image, light_slide_text)
  • Nouveau paramètre pour les slideshows pour afficher les images comme une liste html (li..)
  • Navigation dans le slideshow à l'aide du clavier (gauche, droite, ESC)


Merci pour votre feedback ! Enjoy. :)

sfLightboxPlugin 1.0.6

01/01/2008

» PHP_Debug 2.1.2 is out !

[En] First of all, happy new yeaaaarrrrr !!!!!!!!! ;)

Just a little update of PHP_Debug, here is the changelog:

  • Added credits to symfony for the idea of the floating div renderer
  • Added a link for a direct input W3C validation
  • Added warning for local W3C validation
  • Corrected html validation in the W3C tab (dooh!)
  • Changed main version number for the pear one
  • Switched package to stable state
  • Fixed typo in the database debug tab
  • [12078] Moved examples to doc role
  • [10919] Created a setStartTime method for the php_debugline class


Enjoy ! See you. COil :)

PS: Be carefull, the main version number is now the pear one. The pear version of this version is 1.0.0 stable whereas the SourceForge version is 2.1.2

PS: You can also check the project homepage

PHP_Debug 2.1.2

25/12/2007

» Un éléphant ça bug énormément

[FR] A défaut d'avoir le courage d'écrire des articles intéressants à propos de Symfony ou de mettre à jour mes plugins; voici quelques photos de mon nouvel "ami de bureau", très sociable, pas si encombrant qué ça malgré la réputation qu'il traîne. :) Le voilà donc dans diverses poses. Vous pouvez le commander sur le site de Nexen entre autres.

J'ai mon éléphant PHP
J'ai mon éléphant PHP
J'ai mon éléphant PHP
J'ai mon éléphant PHP



PS: Ah au fait, joyeux Noël à tous ;)

27/10/2007

» GamesOfficer powered by symfony

[En] I didn't had much time to blog these last weeks... :/ Indeed we were finishing a new project, an e-commerce website called GamesOfficer. And obviously, it is powered by the last stable version of symfony. (currently 1.0.8). What is GamesOfficer ? Well, it's quite like PriceMinister but exclusively about gaming universe. You can buy games (all platforms), accessories... (in france) I am involved in the development of this site since 5 month for the Splitgames company, and we are quiet proud of it ! About the use of symfony in this website:

  • 26 plugins used (including 8 home made) (and 2 of mines Lightbox and TCPDF :) )
  • 13 new helpers classes were developed (like JSON, generic ajax pager...)
  • 19 specific new pake tasks
  • Some snippets of symfony were used and improved (like the TCPDF wiew, Array pager... )
  • Ajax helpers are used among the site, like in the advanced search

... quite hard to say all, i think developing this website without symfony would have take 3 more times !!! :) And moreover the site is really beautifull. Don't you like the GamesOfficer mascot ? :)


GamesOfficer homepage



About symfony, the actual activity arround this framework is quite incredible. If you follow the "a week of symfony" blog post by Javier Eguiluz, it's not so hard to realize... I must say it's now hard to follow all new plugins ! I'll have to take some time to check and test the new ones ! But thanks for all contributors and perhaps symfony could make the coffee soon with the sfCoffeePlugin ? ;)

04/09/2007

» PSymfony3

[Fr] Fabien Piuzzi de la société Splitgames (pour laquelle je travaille actuellement) vient de nous sortir un tutorial complet pour pouvoir développer avec Symfony (et sur une platforme LAMP en général) sur PS3, et oui c'est possible avec Reefab. ;) Je vous laisse découvrir le tutoriel, étant trés complet et détaillé vous ne devriez pas rencontrer de problème majeur. Sinon n'hésitez pas à le contacter sur son blog.



Fabien, tu risques d'être hais très prochainement harcelé par des gosses qui auront reçu comme cadeau de noel, une ps3, un cd d'image d'Ubuntu et le definitive guide to Symfony, lol. ;) Attends toi à te faire spammer très prochainement. :p

Décidemment Splitgames est toujours à la pointe en ce qui concerne Symfony, une surprise étant d'ailleurs en préparation mais je ne peux en dire plus cela fera l'objet d'un post plus conséquent dans le futur. ;)

D'autre part, si vous êtes fan de PHP, MySQL, Symfony, HTML/CSS, SVN de jeux videos, que vous êtes situés sur Paris, que vous avez une grosse poitrine (Joke !!! ;) ), Splitgames est toujours à la recherche de bons développeurs pour poursuivre sa progression. Vous pouvez envoyer un email à cette adresse jobs [at] splitgames [dot] com, à bon entendeur. :)

12/06/2007

» Plugins, plugins and (sf) plugins

[EN] Translation coming soon (edit 19/07: too lazy to do the translation)

[FR] Pas mal de mouvements ces derniers temps dans la section, on compte pas moins de 80 plugins désormais et on se rapproche de la barre fatidique des 100, c'est vraiment excellent pour le framework et lui donne une richesse certaine. On y trouve vraiment de tout, de la série de plugin sur propel qui permettent d'ajouter à cet ORM des fonctionnalités comme l'audit d'objet, la gestion d'arbre... aux plugins plus farfelus qui permettent de gérer des smileys ou qui permettent l'intégration de librairies javascript externes, ou encore qui permettent de s'interfacer avec d'autres applications PHP (sfGallery2Plugin...) Le mieux étant encore d'aller sur le wiki pour dénicher ceux qui pourront vous être utiles... Quant à mes plugins, ils se portent plutôt bien !

  • sfLightboxPlugin en est à la version 1.0.5, la prochaine publication 1.1.0 sera faite par Demental et incluera donc comme le numéro de version le laisse entendre, de nouvelles fonctionnalités. Stay tuned ! ;)
  • sfTCPDFPlugin à été mis à jour par fred, qui a corrigé les bugs, rendu le plugin customisable, corrigé et mis à jour l'exemple complet de la librairie TCPDF. C'est vraiment cool de voir son travail repris, amélioré et publié par quelqu'un d'autre. Mais c'est le principe même de l'open source n'est-ce pas ? :)
  • sfJoomlaPlugin lui au contraire est en train de tomber aux oubliettes... Quelques personnes s'y étaient interessé mais depuis plus grand chose, il est vrai que d'interfacer un framework et un CMS aussi "fouilli" ( ;) ) que Joomla reste une idée assez marginale... Enfin il a le mérite d'exister, si ça peut/a pu servir à quelqu'un... :)

» Autres billets / Other post

1 2 3 >