エンジニア採用セミナー
エンジニア採用セミナー
2009.05.15

画像にリンクをつけたい

まっちー

僕が現在CakePHPの練習のために作っていたブログシステムは、本当にシステムだけのものなので、基本的に画像がない。個別の記事に画像をアップロードした場合にしか画像がない。

でもたいていのサイトって、画像つきのリンクがあると思うんです。サイトの一番上にある画像なんかは、トップに戻るリンクになっている場合がわりと多いんじゃないかと思うんです。このサイトもそうです。上の地球をクリックすれば、トップページに飛びます。

ところでこれ、地球だよね? 実は我々の銀河を飛び越して、ご近所(230万光年くらい?)のアンドロメダ銀河の中にあるHMX-1118みたいな名前の星だったりしないよね? 今度うちの社長に確認しとこう。

ていうか、そんな名前の星はたぶんない。HMXはアンドロメダじゃなくてアンドロイドの方だ。

CakePHPでリンクを作りたいと思ったら、htmlヘルパーを使えばできます。でも、それを画像リンクにするにはどうすれば良いのかと思いまして、最初はlinkメソッドの第一引数にimageメソッドをそのまま入れればいけんのかなと単純に考えていたんですが、いざやってみるとそんな単純にはいかなかったようで・・・。

<?php echo $html->link($html->image('image.jpg'),"/users/index") ?>

こんな感じに書くと、残念ながら画像は表示されず、HTMLのimgタグがそのまま表示され、それがリンクになってしまう。これを解消するには、第五引数にfalseを入れてやればいいらしい。

<?php echo $html->link($html->image('image.jpg'),"/users/index",null,null,false) ?>

こうすれば、無事に画像リンクができあがる。第五引数に値を入れるためには、別に何の指定もしなかったとしても第三、第四の引数も書いておかなければいけないので、nullを書く。

別に不都合だとは思わないですけど、でも本来なら何も書く必要がないところにnullを書かなきゃいけないってのは、いまいちすっきりしないような気がしないでもないです。

array(‘five’ => ‘false’)とか書いたら第五引数にfalseを入れるんだよみたいな感じにできたらいいのにね。

独自のヘルパーはほとんど作ったことがないですけど、こういうときに自分でヘルパーを作れば良いんだろうか?