【CakePHP入門】linkメソッドの使い方(HtmlHelper)

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メソッドの使い方を忘れてしまったら、この記事を思い出してくださいね。

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次