引言
作为后端工程师的你,是不是面对一堆JS,CSS感觉无比抓狂。如果能摆脱大量的冗余的HTML代码块,
那该多好啊。laravel作为扩展性极强的框架,自然是为广大后端开发者赋能。
本文我们讲一个简单且常用的表单类 Form。
代码时间
还记得我们之前文章提到的,laravel快速注册restful api方式路由方法的方式吗?
代码语言:txt复制Route::resource('events', 'EventsController');
在那个章节,我们并没有手动实现路由对应的控制器方法,仅仅搭建了简单的代码框架。
现在我们首先实现添加记录的内容,预想前端页面有一个表单,用于提交数据。
代码语言:txt复制public function create()
{
return view('events.create');
}
相对应地,需要创建一个blade文件,resources/views/events/create.blade.php ,
为了使用框架提供的 Form 类库,在 config/app.php 文件内添加如下内容:
代码语言:txt复制'aliases' => [
'Form' => CollectiveHtmlFormFacade::class
],
当然了,使用此类之前,你需要保证使用 composer 安装了匹配版本的类库文件。首先是一个简单的文本输入框:
代码语言:txt复制{!! Form::text('name', null,
[
'class' => 'form-control input-lg',
'placeholder' => 'PHP Hacking and Pizza'
])
!!}
以上代码最终生成的HTML内容如下:
代码语言:txt复制<input
placeholder="PHP Hacking and Pizza"
name="name"
type="text"
value=""
id="name"
class="form-control input-lg"
>
大家注意,模板文件内使用的分隔符是使用 {!! !!},也就是说不对其进行转义。
Form::text第一个参数是分配给输入元素的name属性的字符串,该值也将分配给id属性,除非你在数组中明确为id分配值,并作为第三个参数传递。
第二个参数(当前设置为null)可用于设置表单字段的value属性。设置为null时,将使用空白值。
接着我们为input输入框添加一个标签,用于提示给用户该字段的用途。
上述表单元素会包裹在 <form>...</form>标签内,所以我们需要为上述内容添加这个标签。
代码语言:txt复制{!! Form::open(['route' => 'events.store'], ['class' => 'form']) !!}
{!! Form::close() !!}
其中默认表单使用的是 POST 方法,route 参数指定了路由的位置。也可以是使用的路由别名。
有了上方的代码结构,我们就可以构建一个完整的页面了。模板 resources/views/events/create.blade.php 代码如下。
首先使用布局模板文件:
代码语言:txt复制@extends('layouts.app')
然后手动实现 @section('content')...@endsection部分代码。为了节约空间,仅贴出主要form表单元素:
代码语言:txt复制<div class="row">
<div class="col">
// 表单内容
</div>
</div>
接着是表单内容结构,头部和尾部:
代码语言:txt复制{!! Form::open(['route' => 'events.store'], ['class' => 'form']) !!}
// 表单元素
{!! Form::close() !!}
下面是一个完整的输入框:
代码语言:txt复制<div class="form-group">
{!! Form::label('name', 'Event Name', ['class' => 'control-label'])!!}
{!! Form::text('name', null, ['class' => 'form-control input-lg', 'placeholder' => 'PHP Hacking and Pizza'])!!}
</div>
还有下拉选择框:
代码语言:txt复制<div class="form-group">
{!! Form::label('max_attendees', 'Maximum Number of Attendees', ['class' => 'control-label'])!!}
{!! Form::select('max_attendees', [2,3,4,5], null, ['placeholder' => 'Maximum Number of Attendees', 'class' => 'form-control input-lg'])!!}
</div>
以及文本框输入:
代码语言:txt复制<div class="form-group">
{!! Form::label('description', "Description", ['class' => 'control-label'])!!}
{!! Form::textarea('description', null, ['class' => 'form-control input-lg', 'placeholder' => 'Describe the event'])!!}
</div>
以及最重要的提交按钮:
代码语言:txt复制<div class="form-group">
{!! Form::submit('Add Event', ['class' => 'btn btn-info btn-lg', 'style' => 'width: 100%'])!!}
</div>
最后生成的表单页面如下图:
写在最后
本文介绍了laravel框架引入的Form类库,用于生成前端的表单页面元素,不过是用PHP的方式调用。
我们演示了常用的表单元素的用法,大家可以自定查看文档深入学习。
Happy coding :-)