资讯专栏INFORMATION COLUMN

Laravel 组件之 Forms & HTML 组件 (laravelcollective

Amio / 2320人阅读

摘要:原文地址安装首先通过来安装这个包编辑项目的文件在部分加入接下来从命令行更新接下来添加到的数组最后添加两个类链接到的数组创建表单打开表单默认是方法你可以随意指定其他接收方法表单仅仅支持和方法和方法将会使用一个隐藏域添加到表单中来欺骗实现你可

原文地址: Laravel Collective Forms & HTML

安装

首先通过 composer 来安装这个 包, 编辑项目的 composer.json 文件. 在 require 部分 加入 laravelcollective/html :

"require": {
    "laravelcollective/html": "5.1.*"
}

接下来从命令行更新 composer :

composer update -vvv

接下来添加 provider 到 config/app.phpproviders 数组:

"providers" => [
    // ...
    CollectiveHtmlHtmlServiceProvider::class,
    // ...
],

最后 添加两个类链接到 config/app.phpaliases 数组:

"aliases" => [
    // ...
    "Form" => CollectiveHtmlFormFacade::class,
    "Html" => CollectiveHtmlHtmlFacade::class,
    // ...
],

创建表单 打开表单
{!! Form::open(array("url" => "foo/bar")) !!}
    //
{!! Form::close() !!}

默认是 POST 方法, 你可以随意指定其他接收方法

echo Form::open(array("url" => "foo/bar", "method" => "put"))

Note: HTML 表单仅仅支持 POSTGET方法, PUTDELETE 方法将会使用一个隐藏域_method 添加到form 表单中来欺骗实现

你可以使用指定的控制器@动作 或者命名的路由来创建表单

echo Form::open(array("route" => "route.name"))

echo Form::open(array("action" => "Controller@method"))

同样也可以向路由中传入参数.

echo Form::open(array("route" => array("route.name", $user->id)))

echo Form::open(array("action" => array("Controller@method", $user->id)))

如果你的表单需要支持文件上传, 在数组中添加 一个 files 配置项.

echo Form::open(array("url" => "foo/bar", "files" => true))
CSRF 保护 向表单中添加 CSRF Token

Laravel 提供了一个简单的方法来防止你的应用遭受跨站攻击. 首先会在你的session 中生成一个随机的 token, 如果你使用 Form::open 方法并且提交方法是 POST, PUT或者是 DELETE, CSRF token 将会自动的添加到你的form 表单的隐藏域中. 换种方法 如果你像自己生成 CSRF token 字段, 你可以使用 token 方法.

echo Form::token();
给路由添加 CSRF 过滤器
Route::post("profile", array("before" => "csrf", function()
{
    //
}));
表单模型绑定 给表单绑定模型

通常, 你需要想表单中填入来自数据库模型的数据. 想这样做你可以使用 Form::model 方法.

echo Form::model($user, array("route" => array("user.update", $user->id)))

现在当你自动生成一个表单元素, 例如文本输入框. Model 的值将会自动匹配并且填写到相关的表单字段中.例如. 一个文本输入框的 name 是 email这个字段将会用 用户 Modelemail 属性来填充并且设置. 当然, 还有其他用法. 如果一个字段在session 闪存数据中 也存在这个名字, 这个将会覆盖模型中的这个字段值. 优先级是这个样子的:

Session Flash Data (Old Input) [session 闪存 / 老的输入数据 ]

Explicitly Passed Value [输入值]

Model Attribute Data [模型属性值]

这个可以让你快速的使用模型数据来创建表单, 也能轻松的在服务器校验错误之后重新发布表单.

Note: 使用 Form::model方法的时候一定要使用 Form::close来关闭表单!

标签 生成标签元素
echo Form::label("email", "E-Mail Address");
指定额外的 html 属性
echo Form::label("email", "E-Mail Address", array("class" => "awesome"));

Note: 在创建了一个标签之后, 如果有创建的表单元素的 name 值和 label 的 name 值相符的话, 将会自动在 表单元素 中自动匹配增加 id 属性. id 的值就是 label 的name 值.

文本框, 文本域, 密码 & 隐藏域 创建文本框
echo Form::text("username");
指定默认值
echo Form::text("email", "example@gmail.com");

Note: hiddentextarea 方法的参数和 text 相同.

生成密码输入框
echo Form::password("password", array("class" => "awesome"));
生成其他输入框
echo Form::email($name, $value = null, $attributes = array());
echo Form::file($name, $attributes = array());
多选和单选 生成单选和多选
echo Form::checkbox("name", "value");
echo Form::radio("name", "value");
生成带有选中状态的表单元素
echo Form::checkbox("name", "value", true);
echo Form::radio("name", "value", true);
数字 生成数字输入框
echo Form::number("name", "value");
日期 生成日期输入框
echo Form::date("name", CarbonCarbon::now());
文件选择器 生成文件选择器
echo Form::file("image");

Note: 表单中必须设置 files 参数的值为 true

下拉列表 生成下拉列表
echo Form::select("size", array("L" => "Large", "S" => "Small"));
生成有默认值的下拉列表
echo Form::select("size", array("L" => "Large", "S" => "Small"), "S");
生成空占位符的 下拉列表

这回创建一个没有任何值的 元素作为下拉列表的第一个选择值.

echo Form::select("size", array("L" => "Large", "S" => "Small"), null, ["placeholder" => "Pick a size..."]);
生成分组的列表
echo Form::select("animal", array(
        "Cats" => array("leopard" => "Leopard"),
        "Dogs" => array("spaniel" => "Spaniel"),
    ));
生成范围选择值的下拉列表
echo Form::selectRange("number", 10, 20);
生成有月份名称的选择值
echo Form::selectMonth("month");
按钮 生成提交按钮
echo Form::submit("Click Me!");

Note: 想创建一个按钮元素? 试用 button 方法. 他和 submit 方法有相同的参数.

自定义表单元素 注册一个新的表单元素

用来很方便的来自定义一个表单元素的方法叫做 macros . 合理是怎样使用它. 首先简单的使用名称和闭包函数来注册一个 :

Form::macro("myField", function()
{
    return "";
});

现在你可以使用自定义的名字来调用这个 macro

调用自定义的 Form Macro
echo Form::myField();
生成URL link_to

根据给定的URL生成 html 链接

echo link_to("foo/bar", $title = null, $attributes = array(), $secure = null);
link_to_asset

生成一个链接到指定资源的 html

echo link_to_asset("foo/bar.zip", $title = null, $attributes = array(), $secure = null);
link_to_route

生成一个根据给定路由的html链接

echo link_to_route("route.name", $title = null, $parameters = array(), $attributes = array());
link_to_action

根据指定的控制器/方法来生成 html 链接

echo link_to_action("HomeController@getIndex", $title = null, $parameters = array(), $attributes = array());

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31975.html

相关文章

  • 下载量最高 100 个 Laravel 扩展包推荐

    摘要:本文经授权转自社区,后续更新将以帖子内容和内容为准。说明另一个令人喜欢的地方,是拥有活跃的开发者社区,而活跃的开发者社区带来的,是繁华的扩展包生态。本文对上打了标签的扩展包进行整理,截止到现在年月号,有超过个扩展包,以下是下载量最大的个。 本文经授权转自 PHPHub 社区,后续更新将以 PHPHub 帖子内容 和 GitHub 内容 为准。 说明 Laravel 另一个令人喜欢的地方...

    Tychio 评论0 收藏0
  • 从零开始构建 Wijmo & Angular 2 小应用

    摘要:中秋之际,团队发布正式版,当天宣布支持。其实从开始,到之后版本和版本,一直紧随其后。现在就开始在中使用的第一个应用吧。这些警告表示包里没有,这些仅仅用于一些包信息。好了,现在的准备工作已经完成了,您可以开始创建的应用了。 中秋之际,Angular 团队发布 Angular 2 正式版,Wijmo 当天宣布支持 。其实从Angular Alpha开始,到之后 Beta版本 和 RC 版本...

    glumes 评论0 收藏0
  • Laravel 5.1 表单删除操作

    摘要:表单删除两种方法表单操作需要安装就可以使用标签了如下删除如果没有安装就使用默认的表单提交删除,例如删除控制器方法可以这么写删除成功删除失败路由控制器新建方法控制器内容和上面一致,不过需要注意的是路由要增加一条针 表单删除两种方法 1.Form表单操作 需要Laravel 安装laravelcollective require: { php: >=5.5.9, laravel/frame...

    LdhAndroid 评论0 收藏0
  • Laravel 5系列教程六:表单 Forms

    摘要:不难发现,的还默认为我们生成一个的表单,这个是默认对表单提交的一点安全支持。在表单提交的时候,会自动检查这个是否与保存在中的一致,如果不一致,那就直接跳转回远页面,不允许我们提交数据。 原文来自:https://jellybool.com/post/programming-with-laravel-5-laravel-forms-input 免费视频教程地址 https://larav...

    fancyLuo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<