Techブログ

Tech blog

インターン生ブログ

CakePHP(3.x)におけるFormHelperの使い方

カテゴリ:インターン生ブログ

2020.05.28

このエントリーをはてなブックマークに追加

こんにちは!前回のHtmlHelperに引き続きFormHelperの使い方を紹介していきます!フォーム作成時の作業を代行してくれるツールなので是非使いこなして効率的にフォーム作成をしましょう!

フォームの開始

FormHelperを活用するために、最初に記述するメソッドがcreate()で、下記のような形式で記述し、フォームの開始タグを出力します。

create(mixed $context = null, array $options = [])

$contextのコンテキスト部分にフォームが定義されていて、$optionsの部分にオプション、またはHTML属性の配列が記述されます。なお、パラメータは全てオプションとして記述し、パラメータなしで呼ばれた場合、現在のURLを元に現在のコントローラーに送信するためのフォームを作ろうとしているものとしてみなされます。

フォーム作成のオプション

$options配列は、ほとんどの場合フォーム設定がされる場所であり、この特別な配列にはformタグの生成方法に関係する色々なキーと値のペアが含まれます。例を少し上げると、”post”や”get” などのmethodやフォームを送信するURLの設定する”url”などがあります。

クエリー文字列からフォームの値を取得

デフォルトでは、FormHelper は、「コンテキスト」をもとにその値を描画します。  EntityContextのデフォルトは、現在のエンティティーや $request->getData() からデータを取得します。

しかし、クエリー文字列から読み込む必要があるフォームを構築している場合は、 FormHelper の valueSource() を使って、どこから入力データを読み込むかを変更できます。

echo $this->Form->create($article, [ ‘valueSources’ => [‘query’, ‘context’]]);

フォームのHTTPメソッドを変更

typeオプションを使用することにより、フォームが使用するHTTPメソッドを変更することができます。

echo $this->Form->create($article, [‘type’ => ‘get’]);
出力結果:
<form method=”get” action=”/articles/edit/5″>

フォームのURLを設定

urlオプションを使うと、フォームを現在のコントローラーやアプリケーションの別のコントローラーの特定のアクションに向けることができます。

例えば、フォームを現在のコントローラーのpublish()アクションに向けるには、次のような$optionsを与えます。

echo $this->Form->create($article, [‘url’ => [‘action’ =>’publish’]]);
出力結果:
<form method=”post” action=”/articles/publish”>

目的のフォームアクションが現在のコントローラーにない場合は、フォームアクションの完全なURLを指定することで与えることができる。

フォームコントロールの作成

control() メソッドを使うと完全なフォームコントロールを生成できます。これらのコントロールには、 必要に応じて、囲い込む div 、 label 、コントロールウィジェット、および検証エラーが含まれます。 フォームコンテキストでメタデータを使用することにより、このメソッドは各フィールドに適切な コントロールタイプを選択します。内部的に control() は FormHelper の他のメソッドを使います。

control()メソッドによって生成されたフィールドは、一般的には入力と呼ばれますが、HTMLのinput型の要素だけではなく他のHTMLフォーム要素(select,button,textareaなど)も作成することができる。

echo $this->Form->control(‘published’, [‘type’ => ‘checkbox’]);

requiredオプションを使用して自動的に必須フラグを無効にすることができます。

echo $this->Form->control(‘title’, [‘required’ => false]);

最後に

今回はFormHelperについて軽く紹介させていただきましたが、FormHelperには他にも様々な機能が備わっているので詳しく知りたい方は下記のCakePHPの解説サイトより調べて見てください!

https://book.cakephp.org/3/ja/views/helpers/form.html

一覧へ戻る

記事をカテゴリから探す