欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Laravel 学习笔记(13) - Form 表单进阶

Laravel - Form

建立表单

{{ Form::open(['url' => 'foo']) }}
//...
{{ Form::close() }}

使用open 及close 来建立一个表单。参数是以阵列的方式设定,method 预设为POST,如果要指定其他的方法,可自行增加:

{{ Form::open(['url' => 'foo', 'method' => 'put']) }}

你也可以不使用url,改用route:

{{ Form::open(['route' => 'route.name']) }}

route 带参数:

{{ Form::open(['route' => ['route.name', $user->id] ]) }}

或是指定Controller:

{{ Form::open(['action' => 'Controller@method']) }}

Controller 带参数:

{{ Form::open(['action' => ['Controller@method', $user->id] ]) }}

Form Model Binding (模型绑定)

绑定资料模型,可以让你在需要载入资料到表单栏位时更加方便。

在前面的微型部落格例子中,当我们在编辑文章时,可以改用Model Binding 的方式来改写:

原本的

{{ Form::open(['url'=>'post/'.$post->id, 'method'=>'put']) }}

改成

{{ Form::model($post, ['action'=>['HomeController@update', $post->id]]) }}

现在这个表单已经和$post 所储存的Post 模型绑定,在之后的栏位,就不需要在指定值,只要栏位名称和Post 的属性名称相同即可。

原本的

{{ Form::text('title', $post->title) }}<br>

改为

{{ Form::text('title') }}<br>

这里的'title' 和Post 的属性,也就是资料库中的栏位同名。因此可以不用$post->title 去指定值。

Label

标签文字,通常放在输入框的前面,用来说明输入框内要填入什么内容:

{{ Form::label('title', '标题') }}

如果要加入HTML 属性,可以这么做:

{{ Form::label('title', '标题', ['class'=>'title']) }}

要用到css 去指定样式时,可以加入class 属性。后面其他的表单项目都可以这么使用。

Input(Text, TextArea, Password, Hidden, Email, File)

文字输入框:

{{ Form::text('title') }}
{{ Form::textarea('content') }}
{{ Form::password('password') }}

指定值:

{{ Form::text('title', '这是标题') }}
{{ Form::textarea('content', '这是內容') }}
{{ Form::hidden('id', '5') }}

密码栏位会以点或星号显示输入的文字。

隐藏栏位通常会带值。

text 可以利用label 中说明的加入属性['size'=>30] 来改变输入框的宽度。textarea 则是['size'=>'50x50']。

另外还有email 及档案:

{{ Form::email('email') }}
{{ Form::file('upload') }}

!重要,当你有使用到file 栏位时,在open 中必须加入['files' => true] 参数, 才能执行上传的动作,例如:

{{Form::open(['url'=>'post', 'method'=>'post', 'files'=>true])}}

Checkboxes (多选) 及Radio (单选)

多选

{{ Form::checkbox('habit', 'reading', true) }}看書<br>

habit 是栏位名称,reading 是值,true 表示预设为勾选,可以省略不写,表示不勾选。

单选

{{ Form::radio('city', 'taipei', true) }}Taipei<br>
{{ Form::radio('city', 'taichung') }}Taichung<br>
{{ Form::radio('city', 'kaohsiung') }}Kaohsiung<br>

city 是栏位名称,同名的视为一组,同一组中只有一个可以被选取。taipei 等是值,true 表示选择。

Drop-Down Lists (下拉式清单)

一般清单

{{ Form::select('size', ['L'=>'大','M'=>'中','S'=>'小'], 'M') }}

size 是栏位名称;第二个参数是阵列,表示清单项目;第三个参数可省略,是前面阵列中的Key,表示预设选取的项目。

群组清单

{{ Form::select('fruit', [
    'A' => ['apple' => 'Apple'],
    'B' => ['banana' => 'Banana'],
])}}

fruit 是栏位名称;阵列是清单项目;A 是群组名称,之后的阵列是属于该群组的清单项目。

连续数字清单

{{ Form::selectRange('number', 10, 20) }}

number 是栏位名称,10 是起始值,20 是结束值,这个清单会自动产生10~20 的数字项目。

月份清单

{{ Form::selectMonth('month') }}

自动产生月份名的清单项目,不过是英文的。

Buttons (按钮)

Submit

{{ Form::submit('发表文章') }}

Button

{{ Form::button('按钮') }}

Written by Tony at Tony Blog - http://blog.tonycube.com/

----

来自 http://www.tuicool.com/articles/juyUbu

普通分类: