flsouto/htcheckb

该软件包最新版本(1.0.0)没有可用的许可证信息。

创建复选框字段

1.0.0 2017-02-16 01:06 UTC

This package is not auto-updated.

Last update: 2024-09-23 17:12:17 UTC


README

此库用于创建复选框。

安装

使用composer

composer require flsouto/htcheckb

用法

以下示例实例化复选框类并渲染它

<?php
use FlSouto\HtCheckb;
require_once('vendor/autoload.php');

$checkbox = new HtCheckb("newsletter","Receive newsletter?");

echo $checkbox;

输出

<div class="widget 58a3990befc0e" style="display:block">
 <label style="display:block" for="58a3990befc0e">
 <input name="newsletter" type="checkbox" value="1" /> Receive newsletter?</label>
 <input type="hidden" name="newsletter_submit" value="1" />
</div>

额外的隐藏字段是一个提交标志,表示复选框是否已发送(即表单已提交)。在您有一个默认选中但用户取消选中的复选框的情况下,这是非常重要的。如果发生验证错误,表单必须再次显示,但复选框未选中(默认值被忽略)。

以下示例以只读模式渲染复选框(复选框按钮禁用)

use FlSouto\HtCheckb;
require_once('vendor/autoload.php');

$checkbox = new HtCheckb("newsletter");
$checkbox->readonly();

echo $checkbox;

输出

<div class="widget 58a3990bf1a20" style="display:block">
 <label style="display:block" for="58a3990bf1a20">
 <input type="checkbox" disabled="disabled" /> Newsletter</label>
 <input type="hidden" name="newsletter" value="0" />
 <input type="hidden" name="newsletter_submit" value="1" />
</div>

请注意,还会渲染第二个隐藏字段。这是因为当您禁用表单字段时,它不会被浏览器发送,并且在只读模式下,即使在只读模式下,也要保持数据状态在提交事件中的状态。

更改默认设置

默认情况下,复选框将"1"视为true,将"0"视为false。它还默认未选中(状态"0")。以下示例更改所有这些,使'true'表示'选中','false'表示未选中。它还将字段默认设置为选中

use FlSouto\HtCheckb;

$checkbox = new HtCheckb('newsletter','Newsletter','true','false');
$checkbox->fallback('true');

echo $checkbox;

输出

<div class="widget 58a3990bf213b" style="display:block">
 <label style="display:block" for="58a3990bf213b">
 <input name="newsletter" type="checkbox" value="true" checked="checked" /> Newsletter</label>
 <input type="hidden" name="newsletter_submit" value="1" />
</div>

在以下示例中,我们将模拟一种情况,即表单已提交(请注意'newsletter_submit'标志的存在),但复选框键(即'newsletter')不存在。这意味着用户已取消默认选中复选框。因此,在这种情况下,复选框将渲染不带'checked'属性

$checkbox = new HtCheckb('newsletter','Newsletter','true','false');
$checkbox->fallback('true')->context(['newsletter_submit'=>1]);

echo $checkbox;

输出

<div class="widget 58a3990bf2758" style="display:block">
 <label style="display:block" for="58a3990bf2758">
 <input name="newsletter" type="checkbox" value="true" /> Newsletter</label>
 <input type="hidden" name="newsletter_submit" value="1" />
</div>

最后但并非最不重要的是,我想向您展示复选框还可以表示假设数据库行状态,该行使用常见的Y/N模式来指示它是否活动。请注意,尽管告知默认选中,但复选框仍被渲染为未选中

// let's pretend this data was loaded from the database
$row = ['active'=>'N'];

$checkbox = new HtCheckb('active','Active','Y','N');
$checkbox->fallback('Y'); // check by default
$checkbox->context($row); // set the form's state

echo $checkbox;

输出

<div class="widget 58a3990bf2d4b" style="display:block">
 <label style="display:block" for="58a3990bf2d4b">
 <input name="active" type="checkbox" value="Y" /> Active</label>
 <input type="hidden" name="active_submit" value="1" />
</div>