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));
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.
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.

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

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