concrete5 逆引きリファレンス

フォームヘルパーでフォームを出力する

2021/07/02 16:59
フォームヘルパーで基本的なフォームタグを出力します。

フォームヘルパーを使うと、基本的なフォームタグを出力できます。

<?php
$form = Core::make('helper/form');
?>
<form method="post" action="<?php echo $this->action('contact_form')?>">
<?php
echo $form->label('username', 'ユーザ名');
echo $form->text('username', '', array('style' => 'display:block;','class'=>'my-form'));
echo $form->label('message', 'メッセージ');
echo $form->textarea('message','',array('style' => 'display:block;','cols' => '30','rows' => '10','class'=>'my-form'));
echo $form->submit('submit','送信',array('style' => 'display:block;','class'=>'my-form'));
?>
</form>

$form->text($name,$default,array());

$nameに、タグのIDやname、$defaultの表示の時の規定値、確認画面や取得した値などを入れる。array()で、他の属性値やクラスなどを追加します。

<form method="post" action="http://c5addon.local/code-sample/code01/contact_form/163">
<label for="username" class="control-label">ユーザ名</label>
<input type="text" id="username" name="username" value="" style="display:block;" class="my-form form-control ccm-input-text">
<label for="message" class="control-label">メッセージ</label>
<textarea id="message" name="message" style="display:block;" cols="30" rows="10" class="my-form form-control"></textarea>
<input type="submit" style="display:block;" class="my-form btn ccm-input-submit" id="submit" name="submit" value="送信">
</form>

text,textarea,submit以外にもフォームのタグを出力できます。

echo $form->hidden('param', date('Y/m/d'));

<input type="hidden" id="param" name="param" value="2021/07/02">

チェックボックスを出力するコードは配列で与える事で出力できます。

$select_array = array('men','women'); //メニューの項目
$checked = array('men'); //チェックをオンにする項目
foreach($select_array as $key => $val){
   echo $form->checkbox('gender[]', $key, in_array($key,$checked), array('style' => 'display:inline;')).$val;
}

スクリーンショット 2021-07-09 21.23.07.png

<input type="checkbox" id="gender_0" name="gender[]" style="display:inline;" class="ccm-input-checkbox" value="0" checked="checked">men
<input type="checkbox" id="gender_1" name="gender[]" style="display:inline;" class="ccm-input-checkbox" value="1">women

 

同じようにラジオボタンも出力できます。ただ、第3引数を文字列のtrueにしないと機能しませんでした。これは改善されるかもしれません。

$select_array = array('men','women'); //メニューの項目
$checked = array('men'); //デフォルトにする項目
foreach($select_array as $key => $val){
   if(in_array($key,$checked)){$active = 'true';}else{ $active =  'false';}
   echo $form->radio('gender', $key,$active, array('style' => 'display:inline;')).$val;
}

<form method="post" action="http://c5addon.local/code-sample/code01/contact_form/163">
 <input type="radio" id="gender1" name="gender" value="0" style="display:inline;" class="ccm-input-radio" checked="checked">men
 <input type="radio" id="gender2" name="gender" value="1" style="display:inline;" class="ccm-input-radio">women              
</form>