通过做上一集,大家应该发现了一个问题。
新增和编辑功能里面都有相同的表单,而且加上了验证后,每个表单中,都还要加上old
,这个实在是比较麻烦。
现在的表单还比较简单,加几个old
不是很难,但真实的项目中,很多时候表单比较复杂,例如有大量的checkbox
,radio
这种,判断起来就会很费劲了。
而且新增和编辑,表单都是一模一样的,能不能也分离成一个片段,然后引用下就好了呢?这一集要实现的功能就正是这个。先来装这个composer
包,https://laravelcollective.com/docs/5.4/html
composer require "laravelcollective/html":"^5.5.0"
{!! Form::open(['route' => 'issues.store', 'class' => 'am-form']) !!}
@include('issues._form')
{!! Form::close() !!}
{!! Form::model($issue, ['route' => ['issues.update', $issue->id], 'method' => 'put', 'class' => 'am-form']) !!}
@include('issues._form')
{!! Form::close() !!}
{!! Form::hidden('user_id', Auth::id()) !!}
<fieldset>
<div class="am-form-group">
{{ Form::label('标题') }}
{{ Form::text('title', null, ['placeholder' => '输入活动标题']) }}
</div>
<div class="am-form-group">
{{ Form::label('内容') }}
{{ Form::textarea('content', null, ['rows' => '12', 'placeholder' => '填写活动内容,支持markdown。']) }}
</div>
{{ Form::submit('提交', ['class' => 'am-btn am-btn-default']) }}
</fieldset>
这个包里面,其实还有另一个内容,提供了几个生成链接的辅助函数,我们现在就来试一下好了。show.blade.php
中,找到编辑按钮。
{!! link_to_route('issues.edit', 'Edit', $issue->id , ['class' => 'am-btn am-btn-primary am-radius am-btn-sm' ]) !!}
我们之前说过,rails
和laravel
是孪生的姐弟,其实这个包提供的两个功能,其实最初的实现也都是来自于ruby on rails
。这里的form
和html
,在以前的
laravel 版本中都是默认自带的,新版本可能是作者想简化上手的难度,于是就分离出去了,现在需要单独用composer
命令来安装了。
至于用不用就看你自己的想法了。我个人是推荐的,特别对于复杂的项目,可以尽可能的减少重复繁琐的工作。ITFun
中的所有表单,也都是用类似的这种form
实现的,只不过我用的是rails
上的simple form
包。它和我们今天讲的包,用法和原理基本都是一样的。
已添加到喜欢了