tips

HTML helper et URL absolue

25/01/2010  |  Publié dans cakephp, tips

Un tout petit “truc et astuce” : je développe en ce moment à mes heures perdues un système de newsletter, en utilisant, en quelque sorte, les vues comme système de template. Peut-être que j’en ferai un module indépendant un jour… Mais bref, cela permet entre autres d’utiliser naturellement tous les helpers dont on a besoin dans sa newsletter. Un des problèmes que j’avais est que les liens, dans une newsletter, sont nécessairement absolus, avec le nom de domaine donc. Par défaut, HtmlHelper::link() génère des liens relatifs. Son acolyte Router::url() prend comme deuxième paramètre un booléen, $full, qui indique s’il faut générer l’URL complète ou non. Par analogie, j’ai donc tenté la même chose avec le helper, sans succès. En jetant un oeil dans le code, j’ai trouvé que le paramètre à passer était “full_base”. Un petit exemple :

echo $html->link($post[’Post’][’title’], array (’admin’ => false, ‘action’ => ‘view’, ‘controller’ => ‘posts’, ’slug’ => $post[’Post’][’slug’], ‘full_base’ => true));

The Space

28/05/2008  |  Publié dans cakephp, tips

Last week-end, I came accross a tiny but annoying problem.

I had this simple line of code :

$artist = $this->Artist->find(array(’name’ => $name);

Most of the times, it worked fine. But sometimes I had to search for “!!!” or “In Scary Stereo” and CakePHP threw an error, saying the SQL query was wrong. And it was, because CakePHP automagically transformed the “!” and the “In” into SQL operators…
I first thought that I need to force the “equal” operator, like this:

$artist = $this->Artist->find(array(’name’ => ‘=’. $name);

Then someone on CakePHP’s google group gave me that tip :

$artist = $this->Artist->find(array(’name’ => ‘!-’.$name);

It didn’t work. But Grant Cox suggested me to add as simple space after the equal sign:

$artist = $this->Artist->find(array(’name’ => ‘= ‘. $name);

That worked!!

Too much magic kills the magic…

[edit]
La RC1 change quelque peu tout cela : l’opérateur passe à gauche de la flèche, et c’est bien mieux ainsi. En revanche, j’ai un gros soucis de connexion à deux bases de données différentes avec cette nouvelle version.

L’API de cakePHP en ligne de commande

31/01/2008  |  Publié dans cakephp, tips

Ce week-end, ma connexion internet avait quelques difficultés à se maintenir plus de quelques secondes. Du coup, j’étais un peu embêté pour consulter de manière interactive la doc de l’API (celle-ci).Dans Eclipse PDT, un bon vieux F2 vous affichera un tooltip généré à partir du commentaire format PHPdoc à propos de la méthode sur laquelle se trouve votre pointeur… quand Eclipse arrive à s’y retrouver, c’est-à-dire pas si souvent. En fouillant dans le répertoire “console” de cake, je suis tombé sur le fichier “api.php”, présent (d’après SVN) depuis le 23/05/2007 dans Cake et dont j’ignorais jusqu’à présent l’utilité. En fait, il permet d’accéder à la documentation de l’API en ligne de commande. Pour cela :

  • se positionner dans le répertoire cake/console
  • taper : “./cake api model -m find” (par exemple) et admirer.


Voici le mode d’emploi :

Usage: cake api [type] model [-m method]

On peut se contenter de préciser le nom de la classe, on obtient alors une liste des méthodes dont on veut accéder à la documentation. On peut mieux cibler soit en précisant directement la méthode soit en restreignant la recherche à un type de classes (behavior, model, view…). Si l’on prend la peine de documenter ses propres classes, ça peut aussi aider.

Copie d’écran du terminal pour la commande ./cake api model -m find

A l’instar de bake, il peut être commode de définir cette commande en tant qu’external tool (ci-dessous une configuration sommaire).

Configuration Eclipse

(désolé pour la présentation foireuse de ce post, il y a des choses qui m’échappent encore dans wordpress…)

Archives

Liens au pif

  • blogcatalog
  • POPnews
  • Debuggable
  • Yahoo Pipe des sites CakePHP FR
  • Web Development 2
  • Formation CakePHP
  • Julien Bourgeois
  • Google Group CakePHP Fr
  • Frédéric de Villamil
  • snook.ca
  • Pseudocoder
  • Mark Story
  • mes photos
  • Le blog de Pierre
  • Communauté française CakePHP
  • Derniers commentaires

    • Guillaume: Merci pour cette précision, Pierre, je vais aller voir ça.
    • Pierre Martin: Bonjour Guillaume, et merci encore une fois pourle lien vers mon article ! Juste...
    • Guillaume: De loin, on ne voyait pas très bien :)
    • Gabriiiel: Roy nous a remis un trophée… :D
    • Pierre MARTIN: Il y a aussi cet article de teknoid contenant un lien vers un plugin de recherche...
  • Derniers trackbacks