hmtvltk2/yii2-builder

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

安装: 21

依赖项: 1

建议者: 0

安全性: 0

星级: 0

关注者: 1

分支: 50

类型:yii2-extension

v1.6.6 2018-11-26 05:35 UTC

This package is auto-updated.

Last update: 2024-09-04 21:57:59 UTC


README

Krajee Logo
yii2-builder Donate

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

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

  • 表单
  • bootstrap4的FormGrid
  • TabularForm

注意:请查看composer.json以获取此扩展的要求和依赖项。

最新版本

有关各种版本更改的详细信息,请参阅更改日志

表单

\kartik\builder\Form

表单构建器小部件允许您通过配置数组构建表单。以下是一些可用的关键功能

  • 从扩展yii\base\modelyii\db\ActiveRecord的模型配置您的表单字段。
  • 支持各种Bootstrap 3.x表单布局。使用高级kartik\widgets\ActiveForm
  • 只需提供columns属性即可使用Bootstrap列/构建器布局样式。
  • 通过重复使用小部件构建属性来构建复杂的布局(例如,同一布局中的单列、双列或多列)。
  • 调整ActiveForm默认值以控制字段选项、样式、模板和布局。
  • 配置您自己的提示以显示在每个活动字段属性下方。
  • 默认提供各种Bootstrap 3.x样式功能。然而,可以轻松地使用任何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 3.x样式功能。然而,可以轻松地使用任何CSS框架进行自定义和主题化。
  • 通过使用kartik\builder\GridView小部件中可用的功能,实现高级表格样式、列和布局配置。[kartik\widgets\ActiveForm](
  • 您可以使用yii\base\Model中的loadMultiplevalidateMultiple函数轻松读取和管理表格输入数据。

注意: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']
                ) . '&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文件。