brainfab / laravel-form
使用 Laravel 框架配合 Symfony 表单组件
dev-master
2017-01-27 18:13 UTC
Requires
- php: >=5.6.4
- laravel/framework: 5.3.*
- symfony/form: ^3.2
This package is not auto-updated.
Last update: 2024-09-28 20:40:49 UTC
README
建设中
安装
使用 composer 安装此包
composer require brainfab/laravel-form
更新 composer 后,将 ServiceProvider 添加到 config/app.php 中的 providers 数组
Brainfab\LaravelForm\LaravelFormsServiceProvider::class,
将 Facade 添加到 config/app.php 中的 aliases 数组
'FormFactory' => Brainfab\LaravelForm\Facades\FormFactory::class,
(可选) 使用 publish 命令将包配置复制到本地配置
php artisan vendor:publish --tag=config
(可选) 使用 publish 命令将包视图复制到本地 views/vendor 文件夹
php artisan vendor:publish --tag=views
控制台
生成表单类:php artisan make:form 'App\Forms\UserForm'
使用示例
app/Forms/UserForm.php
<?php namespace App\Forms; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\EmailType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; class UserForm extends AbstractType { /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('name', TextType::class, [ 'rules' => 'required|min:6', 'label' => 'Name' ]); $builder->add('email', EmailType::class, [ 'rules' => 'required|email', 'label' => 'Email' ]); $builder->add('save_btn', SubmitType::class, [ 'label' => 'Save' ]); } /** * @param OptionsResolver $resolver */ public function configureOptions(OptionsResolver $resolver) { //set default options $resolver->setDefaults([]); } }
app/Http/Controllers/UserController.php
<?php namespace App\Http\Controllers; use App\Forms\UserForm; use Brainfab\LaravelForm\Controller\LaravelForm; use App\User; use Illuminate\Http\Request; class UserController extends Controller { use LaravelForm; public function index(Request $request) { $user = new User(); $form = $this->createForm(TestForm::class, $user); if ($request->isMethod('post')) { //submit request $form->handleRequest($request); if ($form->isValid()) { $user->save(); } } return view('users', [ 'form' => $form->createView() ]); } }
resources/views/users.blade.php
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>LaravelForm</title> </head> <body> {{form($form)}} </body> </html>