ldar/yii2-builder

为 Yii Framework 2.0 简单易用地构建表单(单行或多行/表格形式)

安装: 13

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 2

分支: 50

类型:yii2-extension

v1.6.2 2016-11-19 11:38 UTC

README

Latest Stable Version License Total Downloads Monthly Downloads Daily Downloads

一个表单构建器扩展,允许您为 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\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 读取模型信息。
  • 支持 builderview 的特性,如分页和排序。
  • 允许您突出显示和选择表格行。
  • 允许您为每一行添加和配置操作按钮。
  • 配置您自己的提示以显示在每个活动字段属性下方。
  • 默认提供各种 Bootstrap 3.x 样式功能。然而,可以通过任何 CSS 框架轻松自定义和主题化。
  • 通过使用 kartik\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"

或将其添加到您的 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']
                ) . '&nbsp;' . 
                Html::a(
                    '<i class="glyphicon glyphicon-remove"></i> Delete', 
                    $deleteUrl, 
                    ['class'=>'btn btn-danger']
                ) . '&nbsp;' .
                Html::submitButton(
                    '<i class="glyphicon glyphicon-floppy-disk"></i> Save', 
                    ['class'=>'btn btn-primary']
                )
        ]
    ]     
]); 
ActiveForm::end(); 

许可证

yii2-builder 在 BSD 3-Clause 许可证下发布。有关详细信息,请参阅附带 LICENSE.md 文件。