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;
}
<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>