CakePHPには、HTMLに関連するオプションを簡単に使用することができるHtmlHelperという機能があります。
この記事では、
・HtmlHelperとは?
・HtmlHelperのlinkメソッドとは
・HtmlHelperのlinkメソッドの基本的な使い方
という基本的な内容から、
・ページ内のリンクを作成する方法
・URLにクエリ文字列を指定する方法
などの応用的な使い方について解説します。
ここではHtmlHelperのlinkメソッドについて、詳しく解説していきます!
HtmlHelperとは
HtmlHelperとは、さまざまなHTMLのタグを作成するための機能です。
HtmlHelperを使用すれば、HTMLのリンクを作成したり画像を出力するなど、HTMLに関連するさまざまなオプションを簡単に使用できる便利な機能です。
Cake\View\Helper\HtmlHelper(View $view, array $config = [])
HtmlHelperには、さまざまなメソッドが用意されています。
例えば、文字コードを指定する場合は以下のように記述します。
echo $this->Html->charset('ISO-8859-1');
HtmlHelperの使い方
linkメソッドとは
HtmlHelperのlinkメソッドは、アクションを実行したときに指定したURLへ移動するための機能です。
linkメソッドは、以下のように2種類の記述方法があります。
$this->Html->link(‘タイトル’, $URL, $オプション); $this->Html->link(‘タイトル’, ['controller' => 'コントローラ名', 'action' => 'アクション名', 引数1,$クエリ文字列オプション]);
1つ目のオプションを指定すればタグの属性を指定したり、絶対URLを指定することもできます。
2つ目については、クエリ文字列を指定するの章で詳しく取り上げます。
linkメソッドの使い方
ここではHtmlHelperの数あるメソッドでも使用頻度の高いlinkメソッドを使用して、リンク付きのボタンを作成してみましょう。
以下にHtmlHelperのlinkメソッドを使用した、サンプルを記述します。
Cake/src/Controller/SampleController.php
<?php namespace App\Controller; use App\Controller\AppController; class SampleController extends AppController { public function index() { } }
Cake/src/Template/Sample/index.ctp
<?php echo $this->Html->link( 'Samurai', 'http://www.sejuku.net/', ['class' => 'button', 'target' => '_blank'] ); ?>
このプログラムを実行すると、「Samurai」ボタンのある画面が表示されます。
「Samurai」ボタンをクリックすると、侍エンジニアのホームページに飛ぶことができます。
これはHtmlHelperのlinkメソッド使用時に、HTMLで以下のようにURLのリンクが指定されたボタンが作成されるためです。
<a href="http://www.sejuku.net/" class="button" target="_blank">Samurai</a>
ページ内リンクを作成する
linkメソッドでは、ページ内のリンクを作成することもできます。
先述したURL同様にlinkメソッドの第二引数に、ページのパスを指定します。
echo $this->Html->link( 'Enter', '/home/samurai', ['class' => 'button', 'target' => '_blank'] );
このサンプルでは、パス「/home/samurai」へのリンク付きのボタンが生成されます。
<a href="/app名称/home/samurai" class="button" target="_blank">Enter</a>
なお、app名称の部分にはcakePHPをインストールしたフォルダ名が反映されます。
クエリ文字列を指定する
linkメソッドでは、クライアントからWebサーバへ送信するときに渡すパラメータ(クエリ文字列)を指定することができます。
クエリ文字列は、以下のように指定します。
echo $this->Html->link('fruits', [ 'controller' => 'fruits', 'action' => 'view', 1, '?' => ['apple'=>'100yen', 'orange'=>'80yen', 'melon'=>'500yen'] ]);
このサンプルを実行すると、htmlには以下のように出力されます。
<a href="/app名称/fruits/view/1?apple=100yen&orange=80yen&melon=500yen">fruits</a>
URLの末尾に指定したデータが反映されていることがわかりますね!
まとめ
ここではHtmlHelperのlinkメソッドを使用した、URLの指定方法やページ内リンクの指定方法、クエリ文字列を指定する方法などについて解説しました。
HtmlHelperの数あるメソッドの中でも、linkメソッドは使用する頻度が高いと言えますので、この機会にぜひ覚えておきましょう。
もし、linkメソッドの使い方を忘れてしまったら、この記事を思い出してくださいね。