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

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部として、これまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。プログラミング初学者に向けてわかりやすく、ためになるコンテンツ作りを心がけています。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー