项目作者: pceuropa

项目描述 :
Forms CRUD - formbuilder, generator code
高级语言: JavaScript
项目地址: git://github.com/pceuropa/yii2-forms.git
创建时间: 2016-12-09T17:07:47Z
项目社区:https://github.com/pceuropa/yii2-forms

开源协议:MIT License

下载


FormBuilder module for Yii2

Latest Stable Version Total Downloads License

FormBuilder DEMO

Features

  1. Generate forms, surveys, polls, questionnaires (class FormBuilder)
    • Drag and drop - Sorting, editing, and deleting items
    • CRUD operations by AJAX
    • Built-in RBAC component
  1. Form render widget (class Form)

    • Validation forms (dynamic model)
  2. Storage data submited from form in databases

    • List of forms (GridView)
    • Create database tables after create form
    • Delete database tables after delete form
    • Add table column after add field to form
    • Rename table column after change the name of field
    • Drop table column after delete field in form

Installation Form Builder

  1. composer require pceuropa/yii2-forms

Configuration Form Builder

Make sure that you have properly configured db application component in config file and run the following command:

  1. $ php yii migrate/up --migrationPath=@vendor/pceuropa/yii2-forms/migrations

Add the following code in your configuration file:

  1. 'modules' => [
  2. 'forms' => [
  3. 'class' => 'pceuropa\forms\Module',
  4. ],
  5. ]

Usage

URLs for the translating tool:

  1. /forms/module/index // List of all forms
  2. /forms/module/user // List user's forms
  3. /forms/module/view // Preview form
  4. /forms/module/create // Create form - FormBuilder
  5. /forms/module/update // Update form
  6. /forms/module/delete // Delete form

Full example configuration Form Builder

  1. 'modules' => [
  2. 'forms' => [
  3. 'class' => 'pceuropa\forms\Module',
  4. 'db' => 'db',
  5. 'formsTable' => '{{%forms}}',
  6. 'formDataTable' => 'form_',
  7. 'sendEmail' => true,
  8. 'testMode' => false,
  9. 'easyMode' => true,
  10. 'emailSender' => 'info@email.net',
  11. 'rules' => [
  12. [
  13. 'actions' => [ 'update', 'delete', 'clone'],
  14. 'allow' => true,
  15. 'roles' => ['updateOwnForm'], // rule only owner can edit form
  16. ],
  17. [
  18. 'actions' => ['user'],
  19. 'allow' => true,
  20. 'roles' => ['user'], // role only authenticated user can see user's forms
  21. ],
  22. [
  23. 'actions' => ['create'],
  24. 'allow' => true,
  25. 'roles' => ['@'], // role only logged user can create form
  26. ]
  27. ]
  28. ]
  29. ],
  30. 'components' => [
  31. 'authManager' => ['class' => 'yii\rbac\DbManager',],
  32. ]

Form renderer widget

  1. use pceuropa\forms\Form;
  2. echo Form::widget([
  3. 'body' => '[[{"field": "input", "type": "text", "width": "col-md-5", "name": "email", "placeholder": "email"},{"field": "input", "name": "pass", "type": "text", "placeholder": "pass", "width": "col-md-5"},{"field": "submit", "width": "col-md-2", "backgroundcolor": "btn-info", "label": "Submit"}]]',
  4. 'typeRender' => 'php'
  5. ]);

or

  1. echo Form::widget([
  2. 'formId' => 1, // equivalennt 'form' => FormModel::findOne(1)->body
  3. ]);

Configure RBAC Component

To use generator console, add fallowing code to console config (console.php)

  1. 'controllerMap' => [
  2. 'formsrbac' => [
  3. 'class' => 'pceuropa\forms\migrations\RbacController',
  4. ],
  5. ],

To use RBAC dont forget add fallowing code to app config (web.php or main.php)

  1. 'components' => [
  2. 'authManager' => ['class' => 'yii\rbac\DbManager',],
  3. ]

Create rbac tables in the database
yii migrate --migrationPath=@yii/rbac/migrations

Create RBAC rules and roles. Asssign role user to all users. You can add assign role acction in SignupController
php yii formsrbac/generate

Tests

Php tests run

  1. vendor/bin/codecept run -c vendor/pceuropa/yii2-forms

or

  1. cd vendor/pceuropa/yii2-forms
  2. ../../bin/codecept run

JavaScript tests run
On begining install depencies:

  1. cd vendor/pceuropa/yii2-forms
  2. npm install

run test

  1. cd vendor/pceuropa/yii2-forms
  2. karma start
  3. //or if you use karma localy
  4. npm run test

ex. Menu

  1. [
  2. 'label' => 'forms',
  3. 'items' => [
  4. ['label' => 'List of all forms', 'url' => ['/forms/module/index']],
  5. ['label' => 'User\'s forms',
  6. 'url' => ['/forms/module/user'],
  7. 'visible' => !Yii::$app->user->isGuest
  8. ],
  9. ['label' => 'Create form', 'url' => ['/forms/module/create']],
  10. ],
  11. ],