Laravel技巧库

Laravel Collective重构Form

此课程是收费课程,请先购买或加入会员后再访问。

通过做上一集,大家应该发现了一个问题。
新增和编辑功能里面都有相同的表单,而且加上了验证后,每个表单中,都还要加上old,这个实在是比较麻烦。

现在的表单还比较简单,加几个old不是很难,但真实的项目中,很多时候表单比较复杂,例如有大量的checkboxradio这种,判断起来就会很费劲了。

而且新增和编辑,表单都是一模一样的,能不能也分离成一个片段,然后引用下就好了呢?这一集要实现的功能就正是这个。先来装这个composer包,https://laravelcollective.com/docs/5.4/html

composer require "laravelcollective/html":"^5.5.0"

create.blade.php

{!! Form::open(['route' => 'issues.store', 'class' => 'am-form']) !!}
    @include('issues._form')
{!! Form::close() !!}

edit.blade.php

{!! Form::model($issue, ['route' => ['issues.update', $issue->id], 'method' => 'put', 'class' => 'am-form']) !!}
    @include('issues._form')
{!! Form::close() !!}

_form.blade.php

{!! 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>

html

这个包里面,其实还有另一个内容,提供了几个生成链接的辅助函数,我们现在就来试一下好了。show.blade.php中,找到编辑按钮。

{!! link_to_route('issues.edit', 'Edit', $issue->id , ['class' => 'am-btn am-btn-primary am-radius am-btn-sm' ]) !!}

我们之前说过,railslaravel是孪生的姐弟,其实这个包提供的两个功能,其实最初的实现也都是来自于ruby on rails。这里的formhtml,在以前的laravel版本中都是默认自带的,新版本可能是作者想简化上手的难度,于是就分离出去了,现在需要单独用composer命令来安装了。

至于用不用就看你自己的想法了。我个人是推荐的,特别对于复杂的项目,可以尽可能的减少重复繁琐的工作。ITFun中的所有表单,也都是用类似的这种form实现的,只不过我用的是rails上的simple form包。它和我们今天讲的包,用法和原理基本都是一样的。


现在就注册ITFun.tv会员
持续关注IT界最新技术,随时更新相关课程。在线学习IT课程或直接报名参加线下武汉PHP、Web前端培训。

仅仅30秒钟就可以简单注册

会员注册(免费)
×