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">