Archive for the ‘Developpement’ Category

The sfValidatorPropelUnique in symfony

Nov
17

Today, I wanted to do a signup form but I wanted distinct email addresses to be recorded. After some googlisations, I’ve spotted two problems.

As my field was an email address I thought something like “damn easy, I just have to use something like this: ”

$this->validatorSchema['email_1'] = new sfValidatorAnd(array(
  1.     new sfValidatorEmail(); ,
  2.     new sfValidatorPropelUnique(array(
  3.             'model' => $this->getModelName(),
  4.             'column' => 'email_1'
  5.          ),
  6.          array(
  7.              'invalid' => 'This email address is already assigned to an account.',
  8.          )
  9.     )
  10. ));

Though, after few tries I had an error that I’ve never seen before, saying that it has to be used as a postValidator. Before I understood how to deal with that, I’ve figured out something: I should simply add in my schema

  1. index: unique

in my email field… Damn… But since I’m definitly 2 cool, here is the correct syntax to use in your UserForm.class.php (basically, it shouldn’t be used if you defined correctly your schema.yml though!) :

$this->validatorSchema->setPostValidator(
  1.             new sfValidatorPropelUnique(array(
  2.                 'model' => 'User',
  3.                 'column' => array('email_1')
  4.             ),
  5.             array(
  6.                 'invalid' => 'An account is already registered with this email address.',
  7.             )
  8.         ));

Once again, thanks symfony to allow us escaping from so much troubles !

Propel 1.4.0 stable has been released

Nov
8

The stable version of Propel 1.4.0 has been released today. The official annouce has been made on the new official Propel’s blog. You could find here:

You could also find in the official documentation what is new in Propel 1.4.

Yo, what’s up Propel 1.4 ?

Oct
13

Propel 1.4
Read more »

Running numerous symfony versions using MAMP on Mac OS X

Sep
26

I was basically going to simply translate the symfony multi install tutorial I wrote ages ago but I realised, now that I have more knowledge, that this way wasn’t improved at all. So here is a quickest and cleaner way to run multiple symfony versions on a Mac using MAMP.
Read more »

Put your CSS, Javascripts and pictures files into subdomains using symfony

Jul
27

A quick post concerning a problem I got when I started to move this blog to a symfony application. By the way, there’s still no release date planned yet considering the time I have for it. But let’s go back to this problem.
Read more »

Orange a tué Android ?

Mar
19

C’est tout discrètement que Orange vient de mettre en vente le HTC G1 rebaptisé pompeusement pour l’occasion en HTC Dream alors que SFR se prépare à sortir également son smartphone utilisant Android appelé HTC Magic qui sera, quant à lui, totalement tactile. Read more »

Un rêve d'ado

Mar
3

Quand j’étais un très jeune nolife, y’a environ 8 ans, j’ai eu l’occasion de rentrer en contact avec des gens dispatchés un peu partout en Europe. J’ai connu un certain Isak, Suédois, avec qui on s’est super bien entendu et avec qui je “partageais mes petits ennuis de tous les jours”, un vrai ami virtuel en somme. Les obligations de la vie ne nous ont pas permis de garder contact comme on l’aurait souhaité, mes 2 ans dans l’armée n’ont aidés en rien mais finalement nous avons réussi à se “revoir”.

Et pendant nos longues soirées à refaire le monde, j’avais bien rigolé lorsqu’il m’avait sorti un truc du genre “m8, you’re 2cool4school!” [mec, t'es trop cool pour l'école]. Voilà, aujourd’hui, je lui rends un petit hommage en annonçant très fièrement que je viens de devenir le nouveau propriétaire du domaine 2cool4school.fr ! Les DNS ne sont pas encore actifs, il le seront, d’après les informations que j’ai eu, demain dans la journée.

Aussi, ce domaine va devenir petit à petit mon nom de domaine professionnel! Bein oui, un idiot reste un idiot!

LinkedIn est Web 2.0!

Mar
2

Je viens tout juste d’installer l’application WordPress sur mon profil LinkedIn et je l’ai trouvé suffisamment bien conçu pour rédiger un article sur le sujet. L’outil se veut être simplissime puisqu’il suffit d’entrer l’URL de son blog WordPress et préciser quels billets importer. Pour ça, deux choix possibles: la totalité des billets, idéal lorsque l’on possède un blog dont les sujets sont intimements liés à sa profession ou alors, seconde option, tagger un article “LinkedIn” !

J’ai trouvé cette idée extrêment intéressante dans le sens où elle reste orientée web 2.0, augmente la présence sur le web de la marque et surtout, permet aux utilisateurs de passer à la trappe les articles plus personnels ou tout du moins, qui n’ont rien à faire sous les yeux de vos différents partenaires professionnels. Vraiment, très bon coup de la part de LinkedIn, chapeau bas messieurs !

Propel: jointure avec plusieurs conditions

Feb
28

J’ai été très récemment confronté à un problème avec Propel au moment de faire une jointure: il me fallait faire la jointure sur 2 champs. Aussi, le fait d’être tombé sur une demande similaire il y’a quelques heures sur le Google Groupe symfony-fr m’a poussé à poster directement une solution ici.

Voici le cas qui nous servira d’exemple en SQL:

  1. SELECT * FROM user LEFT JOIN diplome ON (user.id_diplome = diplome.id_diplome AND user.version_diplome = diplome.version_diplome)

Comme vous pouvez le constater, rien de bien méchant en SQL. Toutefois, lorsqu’il s’agit de “convertir” cette requête en Propel, la tâche devient plus ardue puisque après avoir fait un tour sur le site officiel de Propel, ce cas ne semble pas être géré jusqu’à la version 1.3 incluse. Espérons que celà sera corrigé dans la 1.4.

Mais comme je suis (encore) un mec sympa, voici une petite technique pour arriver à ses fins:

  1. $c = new Criteria();
  2. $c->addJoin(DiplomePeer::ID_DIPLOME, UserPeer::ID_DIPLOME . ' AND ' . DiplomePeer::VERSION_DIPLOME . ' = ' . UserPeer::VERSION_DIPLOME, Criteria::LEFT_JOIN);
  3. $users = UserPeer::doSelect($c);

Voilà de quoi éviter de se cogner la tête contre les murs !

Safari 4 dans les bacs!

Feb
25

Vous l’avez peut-être lu un peu partout, la béta de Safari 4 vient tout juste de sortir. C’est donc tout logiquement que je met cette version à l’épreuve depuis hier soir. Premières impressions et petite astuce, parce que je suis en gentil garçon comme le voulait ma maman!

Read more »