hmtvltk2 / yii2-builder
为Yii Framework 2.0轻松构建表单(单行或多行/表格形式)
Requires
- kartik-v/yii2-grid: >=3.2.5
- kartik-v/yii2-helpers: >=1.3.8
- kartik-v/yii2-widget-activeform: >=1.5.6
README
yii2-builder
一个表单构建器扩展,允许您为Yii Framework 2.0构建单视图和多视图/表格形式的表单。该扩展包含以下小部件
- 表单
- bootstrap4的FormGrid
- TabularForm
注意:请查看composer.json以获取此扩展的要求和依赖项。
最新版本
有关各种版本更改的详细信息,请参阅更改日志。
表单
\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来读取模型信息。
- 支持构建视图的功能,如分页和排序。
- 允许您突出显示和选择表格行。
- 允许您为每一行添加和配置操作按钮。
- 配置您自己的提示以显示在每个活动字段属性下方。
- 默认提供各种Bootstrap 3.x样式功能。然而,可以轻松地使用任何CSS框架进行自定义和主题化。
- 通过使用
kartik\builder\GridView小部件中可用的功能,实现高级表格样式、列和布局配置。[kartik\widgets\ActiveForm](。 - 您可以使用
yii\base\Model中的loadMultiple和validateMultiple函数轻松读取和管理表格输入数据。
注意:TabularForm小部件依赖于并使用yii2-grid模块。因此,需要在您的Yii配置文件中设置
gridview模块。
'modules' => [ 'gridview' => [ 'class' => '\kartik\grid\Module' ] ];
重要:您必须遵循以下两种选项之一来设置您的DataProvider或列,以确保每条记录的主键被正确识别。
- 选项1(首选):设置您的数据Provider查询以使用
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"
使用
表单
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([ 'bsVersion' => '4.x', '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' => '<i class="fas fa-book"></i> Manage Books', 'type' => GridView::TYPE_PRIMARY, 'after'=> Html::a( '<i class="fas fa-plus"></i> Add New', $createUrl, ['class'=>'btn btn-success'] ) . ' ' . Html::a( '<i class="fas fa-times"></i> Delete', $deleteUrl, ['class'=>'btn btn-danger'] ) . ' ' . Html::submitButton( '<i class="fas fa-save"></i> Save', ['class'=>'btn btn-primary'] ) ] ] ]); ActiveForm::end();
许可证
yii2-builder遵循BSD-3-Clause许可证发布。有关详细信息,请参阅捆绑的LICENSE.md文件。