administrcms / form
该包的最新版本(0.1.44)没有可用的许可证信息。
administrcms 的表单包,与独立的 Laravel 包一样好
0.1.44
2017-02-02 14:26 UTC
Requires
- php: >=5.5.9
- administrcms/asset-manager: *
- administrcms/localization: *
- laravel/framework: >=5.2
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- mockery/mockery: ^0.9.4
- phpunit/phpunit: 4.8.*
README
进行中。
安装
- 使用 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'); } }