way/form

此包已被废弃,不再维护。未建议替代包。
此包的最新版本(dev-master)没有可用的许可证信息。

让 Laravel 中的表单处理更简单。

dev-master 2014-02-28 22:05 UTC

This package is not auto-updated.

Last update: 2018-05-08 13:26:31 UTC


README

基本思想很简单:简化表单创建过程。

查看快速视觉演示。

我厌倦了创建如表单字段这样的内容

<div class="form-group">
    {{  Form::label('username', 'Username:' ) }}
    {{ Form::text('username', null, ['class' => 'control-group']) }}
</div>

相反,使用这个 FormField 类,你可以这样做

{{ FormField::username() }}

这将会生成必要的(默认为Bootstrap兼容的)HTML。它使用动态方法简化了过程。

虽然它会尽力推断你想要的输入类型,但你也可以覆盖它。

{{ FormField::yourBio(['type' => 'textarea']) }}

这将生成

<div class='form-group'>
    <label for="yourBio">Your Bio: </label>
    <textarea class="form-control" type="textarea" name="yourBio" cols="50" rows="10" id="yourBio"></textarea>
</div>

所以,是的,它只是一个辅助类。如果你的表单需要大量的自定义,这个可能不适合你。但对于简单的表单,它做得很好!

(它还使 Laracasts 演示更容易设置。 :)

要尝试此功能

首先通过 Composer 安装包。

require: {
    "way/form": "dev-master"
}

然后,将服务提供者添加到 app/config/app.php

'providers' => [
    // ..
    'Way\Form\FormServiceProvider'
]

就是这样!你已经准备好了。在视图中尝试一下

{{ FormField::username() }}
{{ FormField::email() }}
{{ FormField::custom(['type' => 'textarea']) }}
{{ FormField::address(['label' => 'Your Address']) }}

这将生成以下内容。虽然默认是Twitter Bootstrap兼容的,但你当然可以根据需要自定义类名。

output

如果你想覆盖默认设置,可以像这样发布配置

php artisan config:publish way/form

现在,访问 app/config/packages/way/form/config.php 进行自定义。以下是默认列表

return [

    /*
     * What should each form element be
     * wrapped within?
    */
    'wrapper' => 'div',

    /*
     * What class should the wrapper
     * element receive?
    */
    'wrapperClass' => 'form-group',

    /**
     * Should form inputs receive a class name?
     */
    'inputClass' => 'form-control',

    /**
     * Frequent input names can map
     * to their respective input types.
     *
     * This way, you may do FormField::description()
     * and it'll know to automatically set it as a textarea.
     * Otherwise, do FormField::thing(['type' => 'textarea'])
     *
     */
    'commonInputsLookup'  => [
        'email' => 'email',
        'emailAddress' => 'email',

        'description' => 'textarea',
        'bio' => 'textarea',
        'body' => 'textarea',

        'password' => 'password',
        'password_confirmation' => 'password'
    ]
];