aneeshikmat / form-complete-ratio
用于yii2的Widget,用于计算用户填写任何表单的比率
Requires
This package is auto-updated.
Last update: 2024-09-09 19:05:37 UTC
README
formCompleteRatio Widget for yii2,用于计算用户填写的任何表单的比率(以完成度比率为例)
真实项目的截图
为模板1设置此代码时的Widget截图
为模板2设置此代码时的Widget截图
功能
- 计算数据库中已填写和保存的表单/模型的比率
- 支持关系表单/模型
- 您可以选择需要计算比率的所需字段。
- 您可以选择结果样式为纯数字、带%的数字或模板。
- 您可以选择计算比率的字段组,如果其中任何一个字段已填写,则像所有字段都已填写一样添加比率。(注意:此组将仅获得1个字段的权重)。
- 您可以选择从关系表中获取一行或多行的比率。
- 支持基本和高级yii2模板
依赖性
- Yii2
- Twitter bootstrap资源
安装
通过composer安装此扩展是首选方式。
运行
php composer.phar require --prefer-dist aneeshikmat/form-complete-ratio "*@dev"
或将
"aneeshikmat/form-complete-ratio": "*@dev"
添加到您的composer.json
文件的require部分。
使用方法
要使用此Widget,您需要将此代码添加到您的视图
/* you need to add needed field in your model to Calculate ratio, In our example these field in Signup() model */
public $formRatioField = [
'id', 'name', 'email', 'phone', 'street'....etc
];
use aneeshikmat\yii2\FormCompleteRatio\FormCompleteRatio;// on top view page
<?= FormCompleteRatio::widget([
'mainModel' => new Signup(),
])?>
如您所见,它非常简单,现在我们将解释此代码,然后转到所有可能用到的显示选项,在上一个代码中,我们创建了FormCompleteRatio widget,mainModel用于确定我们需要为其计算比率的模型或表单,注册表单是一个模型,在这个例子中我们分配了一个新模型,这意味着我们将得到0比率。看看这张结果图
第二种选项用于获取比率,因此我们需要找到当前用户的所需记录,让我们看看这个例子
<?= FormCompleteRatio::widget([
'mainModel' => Signup::findOne(['id' => 1]),
'withPercentage' => true,
])?>
如您所见,我们使用了findOne,并使用了withPercentage来设置比率数字后面的%。看看这张结果图
现在让我们看看所有可以使用的选项
<?= FormCompleteRatio::widget([
'mainModel' => Signup::findOne(['id' => 1]),
'templateStyle' => 1,
'withPercentage' => true,
'formRatioField' => ['id', 'name', 'email', 'phone'],
'ignoreMainModelRatioField' => true,
'templateOption' => [
'templateClassWrapper' => 'col-xs-4',// Block Class
'templateBlockId' => 'form-complete-ratio',
'urlText' => 'Update',// Url Text
'url' => 'javascript:void(0);',// Url
'title' => 'Nice Option',// Main Block Title
]
])?>
templateStyle:此选项有3个不同的值(0、1、2),默认选项是0,这意味着没有任何模板,1将渲染简单的模板,如“为模板1设置此代码时的Widget截图”中的图像,2将渲染如“为模板2设置此代码时的Widget截图”中的简单模板,并且这些选项的依赖性在于您可以编辑或更新为所需的任何样式。
withPercentage:此选项可以是false或true,这意味着是否将%连接到比率数字,不同的选项是false,仅对于模板1是true。
templateOption:此选项包含可以用于自定义模板1或模板2的选项。
formRatioField:这是一个非常重要的选项,也是此Widget的主要选项之一,我们可以直接在此Widget中将此选项设置到所需字段,或者我们可以在我们的模型中设置它而无需调用它,这样我们就可以覆盖字段比率或使用在模型中设置的初始字段集...但如果你在Widget中设置它,你需要设置ignoreMainModelRatioField为true。formRatioField仅接受数组,并且此数组可以包含以下选项:
-
['field1', 'field2',...等等]: 在这种风格中,我们的类将检查所有字段是否都已填写,如果有4个中的3个已填写,我们的类将返回百分比75%。
-
['field1', [['field2', 'field3']]]: 在这种风格中,我们设置了嵌套数组,这意味着如果field2或field3中任一已填写,则field2和field3都视为已填写,换句话说,field1的权重为1,field2和field3的权重也为1,因此如果用户只填写了field2而没有填写field1,field2和field3的比例将是50%,这在许多情况下很有用,例如,如果用户有社交媒体链接,他设置了facebook或tw,则可以显示消息“您的资料已完整”。
-
['field-1', ['model' => '/dir/ModelClassName', 'conditions' => ['field_db_name' => val]]]: 在这种风格中,我们需要与相关模型计算比例,'model'将包含类路径,如\app\models\SocialMedia,'conditions'将包含我们需要设置的规则,以获取所需的行,例如获取is_deleted = 0等相关的行,您也可以在conditions val中使用{{id}}作为mainModel中id的替换,这在您尝试根据FK渲染相关行时很有用,或者通过任何其他方式,此外,在这种风格中,我们仅在找到模型行时计算比例,而无需检查该模型中的字段,如果您需要根据相关字段计算比例,请参阅下一点。
-
['id', 'name', 'email', 'phone', [['model' => '\app\models\SocialMedia', 'oneOrMore' => 'more', 'modelItem' => [['tw', 'fb'], 'website'], 'conditions' => ['signup_id' => '{{id}}']]]]: 在这种风格中,我们添加了oneOrMore以确定比例,我们将计算模型中找到的所有行的依赖性或仅为一个行,因此您有两个选项:more用于所有行,one仅用于从一行获取字段,如果您使用oneOrMore,则需要使用modelItem,此选项具有类似于点1或2的字段数组。