kartik-v/yii2-builder

为 Yii Framework 2.0 轻松构建单行或多行/表格形式的表单

资助包维护!
Open Collective

安装次数: 931 412

依赖关系: 55

建议者: 0

安全: 0

星标: 100

关注者: 17

分支: 50

开放问题: 3

类型:yii2-extension

v1.6.9 2022-01-05 14:09 UTC

This package is auto-updated.

Last update: 2024-09-05 20:02:41 UTC


README

Krajee Logo
yii2-builder Donate       kartikv

Latest Stable Version Latest Unstable Version License Total Downloads Monthly Downloads Daily Downloads

这是一个表单构建器扩展,允许您为 Yii Framework 2.0 构建单视图和多视图/表格形式的表单。该扩展包含以下小部件

  • Form
  • FormGrid
  • TabularForm

注意:请检查此扩展的需求和依赖关系,请参阅 composer.json

最新版本

有关各个版本的更改详情,请参阅 变更日志

文档 & 示例

您可以在 文档 & 示例 中看到详细的 API 代码文档

Form

\kartik\builder\Form

表单构建器小部件允许您通过配置数组来构建表单。以下是一些关键特性

  • 从扩展 yii\base\modelyii\db\ActiveRecord 的模型配置表单字段。
  • 支持各种 Bootstrap 表单布局。使用高级的 kartik\widgets\ActiveForm
  • 通过提供 columns 属性,使用 Bootstrap 列/构建器布局样式。
  • 通过重复使用小部件来构建属性,构建复杂的布局(例如,在同一布局中构建单列、双列或多列)。
  • 调整 ActiveForm 默认值以控制字段选项、样式、模板和布局。
  • 配置每个活动字段属性下显示的自定义提示。
  • 默认提供各种 Bootstrap 样式功能。然而,您可以使用任何 CSS 框架轻松自定义和主题化。
  • 支持并渲染 HTML 输入类型(使用 kartik\widgets\ActiveField),包括输入小部件等
    • INPUT_TEXTtextInput
    • INPUT_TEXTAREAtextarea
    • INPUT_PASSWORDpasswordInput
    • INPUT_DROPDOWN_LISTdropdownList
    • INPUT_LIST_BOXlistBox
    • INPUT_CHECKBOXcheckbox
    • INPUT_RADIOradio
    • INPUT_CHECKBOX_LISTcheckboxList
    • INPUT_CHECKBOX_BUTTON_GROUPcheckboxList
    • INPUT_RADIO_LISTradioList
    • INPUT_MULTISELECTmultiselect
    • INPUT_FILEfileInput
    • INPUT_HTML5input
    • INPUT_WIDGETwidget
    • INPUT_HIDDENhiddenInput
    • INPUT_STATICstaticInput
    • INPUT_HIDDEN_STATIChiddenStaticInput
    • INPUT_RAWraw(任何自由文本或HTML标记)

FormGrid

\kartik\builder\FormGrid

轻松创建Bootstrap网格布局。表单网格构建器小部件提供了一种简单的方法来配置您的表单输入为Bootstrap网格布局和单个数组配置。它基本上使用多个\kartik\builder\Form小部件实例来生成此网格。只需要设置网格的行,其中每行都是一个数组配置,这是由Form小部件所需的。然而,大多数常见的设置如modelformcolumns等可以在FormGrid小部件级别默认。

表格表单

kartik\builder\TabularForm

表格表单允许您更新来自多个模型的信息(通常用于主从表单)。主要功能:

  • 支持所有输入类型,如Form构建器小部件中所述
  • 此小部件的工作方式类似于Yii GridView,并使用ActiveDataProvider来读取模型信息。
  • 支持构建器视图的功能,如分页和排序。
  • 允许您突出显示和选择表格行
  • 允许您为每行添加和配置操作按钮。
  • 配置每个活动字段属性下显示的自定义提示。
  • 默认提供各种 Bootstrap 样式功能。然而,您可以使用任何 CSS 框架轻松自定义和主题化。
  • 通过使用kartik\builder\GridViewkartik\widgets\ActiveForm小部件提供的功能,进行高级表格样式、列和布局配置。
  • 可以使用yii\base\Model中的loadMultiplevalidateMultiple函数轻松读取和管理表格输入数据。

注意: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"

或添加

"kartik-v/yii2-builder": "@dev"

到您的composer.json文件中的require部分。

用法

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([
    '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']
                ) . '&nbsp;' . 
                Html::a(
                    '<i class="fas fa-times"></i> Delete', 
                    $deleteUrl, 
                    ['class'=>'btn btn-danger']
                ) . '&nbsp;' .
                Html::submitButton(
                    '<i class="fas fa-save"></i> Save', 
                    ['class'=>'btn btn-primary']
                )
        ]
    ]     
]); 
ActiveForm::end(); 

许可证

yii2-builder在BSD-3-Clause许可证下发布。请参阅捆绑的LICENSE.md以获取详细信息。