CakePHP3でFormHelperとHTMLHelperの違いと使い方

CakePHP3でFormHelperとHTMLHelperの違いと使い方

163 回閲覧されました

みなさんこんにちは、jonioです。

今回はFormHelperとHTMLHelperの使い方と違いです。

CakePHPのバージョン

3.6で解説します。

3.6から「$this->Form->input」は非推奨なのでこれには触れません。

$this->Form->postLink

HTTPリクエストがデフォルトでPOST(変更したい時)になります。

またPOSTではなくPUTやDELETEに変更することもできます。

またcsrfトークンが自動的に付与され確認メッセージを表示することができます。

コードの書き方は下記になります。

<?php
  echo $this->Form->postLink(
    '表示するテキスト',
    ['action' => 'アクション名'], 
    ['confirm' => 'Are you sure?', 'method' => 'DELETE']
  );
?>

5行目の「’confirm’ => ‘Are you sure?’」は確認メッセージを表示したい場合に書き「’method’ => ‘DELETE’」はHTTPリクエストをPOST以外にしたい時に書きます。

このコードをHTMLにすると下記になります。

<form method="post" action="/コントローラ名/アクション名" style="display:none;">
  <input type="hidden" name="_method" value="DELETE">
  <input type="hidden" name="_csrfToken" value="CSRFトークン">
</form>
<a href="#" onclick="if (confirm('Are you sure?')) { document.forms[0].submit(); }; return false;">表示するテキスト</a>

postLink以外の使い方

$this->Form->PostLinkの「PostLink」を「control」にするとテキストボックス、セレクトボックス、チェックボックスなどを作成できてバリデーションエラー・placeholder・入力が必須かなどを追加することができます。

コードを書くと下記になります。

<?php
  echo $this->Form->control('表示するテキスト', [
    'type' => 'checkbox',
    'name' => 'value',
    'placeholder' => 'チェックを入れてください',
    'required' => true
  ]);
?>

3行目でテキストボックス、セレクトボックスなどを指定します。

4行目のvalueはname属性の値です。

このコードをHTMLにすると下記になります。

<div class="input checkbox">
  <input type="hidden" name="value" value="0">
  <input type="checkbox" name="value" required="required" id="表示するテキスト">
  <label for="表示するテキスト">表示するテキスト</label>
</div>

$this->Html->Link

リンクを生成するので「$this->Form->postLink」に似ていますがHTTPリクエストがGET(表示したい時)の時しか使えません。

コードの書き方は下記になります。

<?php echo $this->Html->link('表示するテキスト', ['action' => 'アクション名'); ?>

このコードをHTMLにすると下記になります。

<a href="/コントローラ名/アクション名">表示するテキスト</a>

Link以外の使い方

$this->HTML->Linkの「Link」を他の値にするとタグの生成ができます。

例えば下記のコードを書いたとします。

<?php $this->Html->charset('utf-8') ?>

下記に変換されます。

<meta http-equiv="Content-Type" content="text/html"; charset="utf-8">