该包的最新版本(0.1.44)没有可用的许可证信息。

administrcms 的表单包,与独立的 Laravel 包一样好

安装: 491

依赖项: 3

建议者: 0

安全性: 0

星星: 2

关注者: 2

分支: 1

开放问题: 0

语言:JavaScript

0.1.44 2017-02-02 14:26 UTC

README

Build Status Code Climate Test Coverage

进行中。

安装

  • 使用 composer 安装
composer require administrcms/form
  • 注册服务提供者(在 config/app.php 或 app/Providers/AppServiceProvider.php 中)
// in app.php
'providers' => [
    // ...
    Administr\Form\FormServiceProvider::class,
    // ...
],

// in AppServiceProvider
public function register()
{
    $this->app->register(\Administr\Form\FormServiceProvider::class);
}
  • 发布资产、配置、迁移等。
php artisan vendor:publish --provider="Administr\Form\FormServiceProvider"

创建表单

有一个命令可供使用,它将为您生成一个 Form 类的基本脚手架。

php artisan administr:form MyForm

或者您也可以创建一个新的类,该类继承自 Administr\Form\Form 类并实现两个抽象方法 - rules 和 form。

表单外观和感觉

默认情况下,表单字段只是基本的 html,没有任何样式。当您发布与包相关的资产时,视图将被导出到 resources/views/vendor/administrcms/form,在那里您可以修改它们以适应您应用程序的主题。

用法

表单类需要通过 IoC 容器解析。一种方法是在方法名称中类型提示该类。

表单的工作方式类似于 Laravel 中的 FormRequests,这意味着当您在响应 post/put 动作的方法中类型提示了表单时,它将验证表单。如果成功,它将执行方法中的代码。否则,它将返回用户并带有错误,并用用户输入填充表单并显示错误。

<?php

namespace App\Http\Controllers;

use App\Http\Forms\MyForm;
use App\MyModel;

class MyController extends Controller {
    public function create(MyForm $form)
    {
        $form->method = 'post';
        $form->action = route('my-form-action');
        
        return view('my-view', ['form' => $form]);
    }
    
    public function store(MyForm $form)
    {
        MyModel::create($form->request()->all());
    }
    
    public function edit($id, MyForm $form)
    {
        $form->method = 'put';
        $form->action = route('my-form-update', [$id]);
        
        // The datasource can be an array, Collection or Model
        $form->dataSource(MyModel::find($id));
        
        return view('my-view', ['form' => $form]);
    }
    
    public function update($id, MyForm $form)
    {
        $model = MyModel::find($id);
        
        $model->update($form->request()->all());
    }
}

然后在视图中您可以简单地这样写

{!! $form->render() !!}

单选按钮组

<?php

namespace App\Http\Forms;

use Administr\Form\Field\RadioGroup;
use Administr\Form\Form;
use Administr\Form\FormBuilder;

class TeamForm extends Form
{

    /**
     * Define the validation rules for the form.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name'      => 'required|max:100',
        ];
    }

    /**
     * Define the fields of the form.
     *
     * @param FormBuilder $form
     */
    public function form(FormBuilder $form)
    {
        $form
            ->text('name', 'Name', ['translated' => true])
            ->radioGroup('is_visible', 'Is Visible', function(RadioGroup $group) {
                $group
                    ->radio('да', ['value' => 1])
                    ->radio('не', ['value' => 0]);
            })
            ->submit('save', 'Save');
    }
}