orchestra / html
Orchestra 平台 HTML 组件
Requires
- php: ^7.3 || ^8.0
- illuminate/support: ^8.40
- illuminate/translation: ^8.40
- laravie/html: ^7.2
- laravie/query-filter: ^2.1
- orchestra/contracts: ^6.0
- orchestra/support: ^6.1
Requires (Dev)
- orchestra/testbench: ^6.17
- dev-master / 7.0.x-dev
- 6.x-dev
- v6.1.0
- v6.0.0
- 5.x-dev
- v5.0.1
- v5.0.0
- 4.x-dev
- v4.1.1
- v4.1.0
- v4.0.0
- 3.8.x-dev
- v3.8.1
- v3.8.0
- 3.7.x-dev
- v3.7.1
- v3.7.0
- 3.6.x-dev
- v3.6.0
- 3.5.x-dev
- v3.5.0
- 3.4.x-dev
- v3.4.0
- 3.3.x-dev
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.4
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.18
- v3.1.17
- v3.1.16
- v3.1.15
- v3.1.14
- v3.1.13
- v3.1.12
- v3.1.11
- v3.1.10
- v3.1.9
- v3.1.8
- v3.1.7
- v3.1.6
- v3.1.5
- v3.1.4
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.2
- v3.0.1
- v3.0.0
- v2.2.4
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.6
- v2.1.5
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.11
- v2.0.10
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
This package is auto-updated.
Last update: 2024-09-17 10:59:42 UTC
README
HTML 组件扩展了 Illuminate\Html
的功能,增加了链式表单和表格构建器的额外功能。这一系列功能是 Orchestra 平台扩展的基础,允许将操作附加到任何现有的表单或表格。
版本兼容性
安装
要通过 composer 安装,请在终端运行以下命令
composer require "orchestra/html"
配置
接下来,在 config/app.php
中添加服务提供者。
'providers' => [ // ... Orchestra\Html\HtmlServiceProvider::class, ],
别名
您可能需要将以下内容添加到 config/app.php
中的类别名
'aliases' => [ // ... 'Form' => Orchestra\Support\Facades\Form::class, 'HTML' => Orchestra\Support\Facades\HTML::class, 'Table' => Orchestra\Support\Facades\Table::class, ],
使用方法
Orchestra\Html\HtmlBuilder
是对 Illuminate\Html\HtmlBuilder
的微小改进。
建议仅在需要在视图外操作 HTML 时使用它,否则使用 html 更好(且更快)。
创建 HTML
使用以下代码在您的库/扩展中创建 HTML 标签
return HTML::create('p', 'Some awesome information');
将返回 <p>一些很棒的信息</p>
。
您可以通过添加第三个参数来自定义 HTML 属性。
return HTML::create('p', 'Another awesomeness', ['id' => 'foo']);
将返回 <p id="foo">另一种很棒的东西</p>
。
原始 HTML 实体
标记一个字符串以避免转义。
return HTML::link('foo', HTML::raw('<img src="foo.jpg">'));
将返回 <a href="foo"><img src="foo.jpg"></a>
。
这也可以通过动态方式完成。
return HTML::link('foo', HTML::image('foo.jpg'));
装饰 HTML
装饰方法允许开发者将 HTML 属性集合定义为 HTML::attributes
方法,同时可以添加默认属性数组作为第二个参数。
return HTML::decorate(['class' => 'foo'], ['id' => 'foo', 'class' => 'span5']);
将返回 array('class' => 'foo span5', 'id' => 'foo');
。
它还支持在需要时替换默认属性。
return HTML::decorate(['class' => 'foo !span5'], ['class' => 'bar span5']);
将返回 array('class' => 'foo bar');
,注意当我们在第一个参数中给出 !span5
时,会排除 span5
。
表单
使用 Orchestra 的 HTML 包创建表单非常简单。让我们开始吧。
创建新表单
要创建新表单,使用 Form::of()
方法。第一个参数是一个字符串,用于定义表单的目的
return Form::of('users');
表单属性
要自定义表单属性,在 FormGrid
实例上调用 attributes($attributes)
方法
return Form::of('users', function ($form) { $attributes = [ 'method' => 'PATCH', 'id' => 'user-login-form', 'class' => 'form-horizontal', ]; $form->attributes($attributes); });
指定表单布局
要指定表单布局,在 FormGrid
实例上调用 layout($view)
方法
return Form::of('users', function ($form) { $form->layout('layouts.form'); });
添加字段
要向我们的表单添加字段,我们将传递一个闭包到第二个参数,并在注入的 FormGrid
上调用 fieldset()
方法。以下是一个示例
return Form::of('users', function ($form) { $form->fieldset(function ($fieldset) { $fieldset->control('input:text', 'username'); $fieldset->control('input:email', 'email'); $fieldset->control('input:password', 'password'); }); });
可用字段
// A text field $form->control('input:text', 'name'); // A password field $form->control('input:password', 'name'); // A file field $fieldset->control('input:file', 'name'); // A textarea filed $form->control('textarea', 'name'); // A select field $form->control('select', 'name') ->options(['one', 'two', 'three']);
添加标签到字段
要向表单控件添加标签,请使用 label()
方法
$form->fieldset(function ($fieldset) { $form->control('input:text', 'username') ->label('Username'); $form->control('input:email', 'email') ->label('Email'); $form->control('input:password', 'password') ->label('Password'); });
添加字段的默认值
要向字段添加默认值,请使用表单控件的 value()
方法
$form->fieldset(function ($fieldset) { $form->control('input:text', 'username') ->label('Username') ->value(Auth::user()->username); $form->control('input:email', 'email') ->label('Email') ->value(Auth::user()->email); $form->control('input:password', 'password') ->label('Password'); });
更改提交按钮标签
要更改提交按钮标签,修改 FormGrid
属性 submit
如下
return Form::of('users', function ($form) { // The form submit button label $form->submit = 'Save'; $form->fieldset(function ($fieldset) { $form->control('input:text', 'username'); $form->control('input:email', 'email'); $form->control('input:password', 'password'); }); });
自定义表单控件属性
要自定义表单控件的属性,在控件上调用 attributes($attributes)
方法
$attributes = [ 'placeholder' => 'Enter your username', 'class' => 'form-control', ]; $form->control('input:text', 'username') ->attributes($attributes);
自定义表单控件本身
$form->control('input:email', 'email', function ($control) { $control->field(function ($row) { return "<input type='email' name="email" value='$row->email'>"; }); });
您还可以创建一个 Renderable
类
use Illuminate\Contracts\Support\Renderable; class EmailAddressField implements Renderable { public function __construct($name, $value) { $this->name = $name; $this->value = $value; } public function render() { return sprintf('<input type="email" name="%s" value="%s">', $this->name, $this->value); } }
然后您可以简单地通过以下方式注册它
$form->control('input:email', 'email', function ($control) { $control->field(function ($row) { return new EmailAddressField('email', $row->email); }); });
显示您的表单
要显示您的表单,只需在视图中使用未转义的blade标签显示它即可
public function index() { $form = Form::of('users', function ($form) { $form->fieldset(function ($fieldset) { $form->control('input:text', 'username'); $form->control('input:email', 'email'); $form->control('input:password', 'password'); }); }); return view('index', compact('form')); }
// In index.blade.php {!! $form !!}