ldar / yii2-builder
为 Yii Framework 2.0 简单易用地构建表单(单行或多行/表格形式)
Requires
- kartik-v/yii2-grid: ~3.0
- kartik-v/yii2-helpers: ~1.3
- kartik-v/yii2-krajee-base: ~1.7
- kartik-v/yii2-widget-activeform: ~1.4
This package is not auto-updated.
Last update: 2024-09-24 16:30:07 UTC
README
一个表单构建器扩展,允许您为 Yii Framework 2.0 构建单视图和多视图/表格形式的表单。该扩展包含以下小部件:
- Form
- FormGrid
- TabularForm
注意:此扩展依赖于 kartik-v/yii2-widgets 扩展,该扩展又依赖于 yiisoft/yii2-bootstrap 扩展。请检查此扩展的 composer.json 文件以了解其要求和依赖项。
最新版本
该模块的最新版本是 v1.6.2。有关详细信息,请参阅 变更日志。
Form
\kartik\builder\Form
表单构建器小部件允许您通过配置数组构建表单。以下是一些可用功能:
- 从扩展
yii\base\model或yii\db\ActiveRecord的模型配置您的表单字段。 - 支持各种 Bootstrap 3.x 表单布局。使用高级的
kartik\widgets\ActiveForm。 - 只需提供
columns属性即可使用 Bootstrap 列/构建器布局样式。 - 构建复杂的布局(例如在同一布局中具有单列、双列或多列) - 通过重复使用小部件构建您的属性。
- 调整 ActiveForm 默认值以控制字段选项、样式、模板和布局。
- 配置您自己的提示以显示在每个活动字段属性下方。
- 默认提供各种 Bootstrap 3.x 样式功能。然而,可以通过任何 CSS 框架轻松自定义和主题化。
- 支持并渲染 HTML 输入类型(使用
kartik\widgets\ActiveField)包括输入小部件等INPUT_TEXT或textInputINPUT_TEXTAREA或textareaINPUT_PASSWORD或passwordInputINPUT_DROPDOWN_LIST或dropdownListINPUT_LIST_BOX或listBoxINPUT_CHECKBOX或checkboxINPUT_RADIO或radioINPUT_CHECKBOX_LIST或checkboxListINPUT_CHECKBOX_BUTTON_GROUP或checkboxListINPUT_RADIO_LIST或radioListINPUT_MULTISELECT或multiselectINPUT_FILE或fileInputINPUT_HTML5或inputINPUT_WIDGET或widgetINPUT_HIDDEN或hiddenInputINPUT_STATIC或staticInputINPUT_HIDDEN_STATIC或hiddenStaticInputINPUT_RAW或raw(任何自由文本或 HTML 标记)
有关更多详细信息,请参阅 文档。
FormGrid
\kartik\builder\FormGrid
轻松创建 Bootstrap 网格布局。表单网格构建器小部件提供了一种简单的方法来配置您的表单输入作为 Bootstrap 网格布局和单个数组配置。它基本上使用上述多个 \kartik\builder\Form 小部件实例来生成此网格。只需设置网格的行,每行将是一个所需的 Form 小部件的数组配置。但是,大多数常见的设置,如 model、form、columns 等,可以在 FormGrid 小部件级别默认。
表格表单
kartik\builder\TabularForm
表格表单允许您更新多个模型的信息(通常用于主从表单)。主要特性:
- 支持在
Form建造小部件中提到的所有输入类型。 - 小部件的工作方式类似于 Yii GridView,并使用 ActiveDataProvider 读取模型信息。
- 支持 builderview 的特性,如分页和排序。
- 允许您突出显示和选择表格行。
- 允许您为每一行添加和配置操作按钮。
- 配置您自己的提示以显示在每个活动字段属性下方。
- 默认提供各种 Bootstrap 3.x 样式功能。然而,可以通过任何 CSS 框架轻松自定义和主题化。
- 通过使用
kartik\widgets\ActiveForm小部件中可用的功能,实现高级表格样式、列和布局配置。 - 可以使用
yii\base\Model中的loadMultiple和validateMultiple函数轻松读取和管理表格输入数据。
注意:TabularForm 小部件依赖于并使用 yii2-grid 模块。因此,需要在您的 Yii 配置文件中设置
gridview模块。
'modules' => [ 'gridview' => [ 'class' => '\kartik\grid\Module' ] ];
重要:您必须遵循以下两种选项之一来设置您的 DataProvider 或您的列,以确保每条记录的键值正确标识。
- 选项 1(推荐):设置您的 DataProvider 查询以使用
indexBy方法按主键索引您的记录。例如:
$query = Model::find()->indexBy('id'); // where `id` is your primary key $dataProvider = new ActiveDataProvider([ 'query' => $query, ]);
- 选项 2(备用):您可以将主键属性设置为您的列之一,并作为表单输入类型(如有需要则隐藏)——这样,模型将通过
loadMultiple方法适当更新(即使您重新排序或排序列)。您还必须在您的模型验证规则中将此属性设置为safe。以下示例展示了这一点。
'attributes'=>[ 'id'=>[ // primary key attribute 'type'=>TabularForm::INPUT_HIDDEN, 'columnOptions'=>['hidden'=>true] ], ]
演示
有关扩展用法的高级 文档。
安装
安装此扩展的首选方式是通过 composer。
注意:在安装此扩展之前,您必须将应用程序根文件夹中的 composer.json 文件中的
minimum-stability设置为dev。
运行以下命令之一:
$ php composer.phar require kartik-v/yii2-builder "@dev"
或将其添加到您的 composer.json 文件中的 require 部分:
"kartik-v/yii2-builder": "@dev"
用法
Form
use kartik\builder\Form; $form = ActiveForm::begin(); echo Form::widget([ 'model' => $model, 'form' => $form, 'columns' => 2, 'attributes' => [ 'username' => ['type'=>Form::INPUT_TEXT, 'options'=>['placeholder'=>'Enter username...']], 'password' => ['type'=>Form::INPUT_PASSWORD, 'options'=>['placeholder'=>'Enter password...']], 'rememberMe' => ['type'=>Form::INPUT_CHECKBOX], ] ]); ActiveForm::end();
FormGrid
use kartik\builder\Form; use kartik\builder\FormGrid; $form = ActiveForm::begin(); echo FormGrid::widget([ 'model' => $model, 'form' => $form, 'autoGenerateColumns' => true, 'rows' => [ [ 'attributes' => [ 'username' => ['type'=>Form::INPUT_TEXT, 'options'=>['placeholder'=>'Enter username...']], 'password' => ['type'=>Form::INPUT_PASSWORD, 'options'=>['placeholder'=>'Enter password...']], 'rememberMe' => ['type'=>Form::INPUT_CHECKBOX], ], ], [ 'attributes' => [ 'first_name' => ['type'=>Form::INPUT_TEXT, 'options'=>['placeholder'=>'Enter first name...']], 'last_name' => ['type'=>Form::INPUT_TEXT, 'options'=>['placeholder'=>'Enter last name...']], ] ] ] ]); ActiveForm::end();
TabularForm
use kartik\builder\TabularForm; $form = ActiveForm::begin(); echo TabularForm::widget([ 'form' => $form, 'dataProvider' => $dataProvider, 'attributes' => [ 'name' => ['type' => TabularForm::INPUT_TEXT], 'color' => [ 'type' => TabularForm::INPUT_WIDGET, 'widgetClass' => \kartik\widgets\ColorInput::classname() ], 'author_id' => [ 'type' => TabularForm::INPUT_DROPDOWN_LIST, 'items'=>ArrayHelper::map(Author::find()->orderBy('name')->asArray()->all(), 'id', 'name') ], 'buy_amount' => [ 'type' => TabularForm::INPUT_TEXT, 'options'=>['class'=>'form-control text-right'], 'columnOptions'=>['hAlign'=>GridView::ALIGN_RIGHT] ], 'sell_amount' => [ 'type' => TabularForm::INPUT_STATIC, 'columnOptions'=>['hAlign'=>GridView::ALIGN_RIGHT] ], ], 'gridSettings' => [ 'floatHeader' => true, 'panel' => [ 'heading' => '<h3 class="panel-title"><i class="glyphicon glyphicon-book"></i> Manage Books</h3>', 'type' => GridView::TYPE_PRIMARY, 'after'=> Html::a( '<i class="glyphicon glyphicon-plus"></i> Add New', $createUrl, ['class'=>'btn btn-success'] ) . ' ' . Html::a( '<i class="glyphicon glyphicon-remove"></i> Delete', $deleteUrl, ['class'=>'btn btn-danger'] ) . ' ' . Html::submitButton( '<i class="glyphicon glyphicon-floppy-disk"></i> Save', ['class'=>'btn btn-primary'] ) ] ] ]); ActiveForm::end();
许可证
yii2-builder 在 BSD 3-Clause 许可证下发布。有关详细信息,请参阅附带 LICENSE.md 文件。