快捷创建
<h1>快捷创建</h1>
<p>在表格中开启这个功能之后,会在表格头部增加一个<code>form</code>表单来创建数据,对于一些简单的表格页面,可以方便快速创建数据,不用跳转到创建页面操作</p>
<p><a href="{{public}}/assets/img/screenshots/quick-create.png" target="_blank">
<img src="{{public}}/assets/img/screenshots/quick-create.png" style="box-shadow:0 1px 6px 1px rgba(0, 0, 0, 0.12)" width="100%">
</a></p>
<h3>基本使用</h3>
<p>> {tip} 需要注意的是,快捷创建表单中的每一项,在<code>form</code>表单页面要设置相同类型的表单项。</p>
<pre><code class="language-php">$grid-&gt;quickCreate(function (Grid\Tools\QuickCreate $create) {
$create-&gt;text('name', '名称');
$create-&gt;email('email', '邮箱');
});</code></pre>
<h3>设置提交地址</h3>
<pre><code class="language-php">$grid-&gt;quickCreate(function (Grid\Tools\QuickCreate $create) {
$create-&gt;action('auth/users');
$create-&gt;method('GET');
});</code></pre>
<p>表单支持的表单项有下面的几种类型</p>
<h3>文本(text)</h3>
<p>文本输入框</p>
<pre><code class="language-php">$create-&gt;text('column_name', 'placeholder...');</code></pre>
<h3>隐藏表单(hidden)</h3>
<p>文本输入框</p>
<pre><code class="language-php">$create-&gt;hidden('column_name');</code></pre>
<h3>邮箱(email)</h3>
<p>邮箱输入框</p>
<pre><code class="language-php">$create-&gt;email('column_name', 'placeholder...');</code></pre>
<h3>IP输入框</h3>
<p>ip地址输入框</p>
<pre><code class="language-php">$create-&gt;ip('column_name', 'placeholder...');</code></pre>
<h3>URL输入框</h3>
<p>url输入框</p>
<pre><code class="language-php">$create-&gt;url('column_name', 'placeholder...');</code></pre>
<h3>密码(password)</h3>
<p>密码输入框</p>
<pre><code class="language-php">$create-&gt;password('column_name', 'placeholder...');</code></pre>
<h3>手机号(mobile)</h3>
<p>手机号输入框</p>
<pre><code class="language-php">$create-&gt;mobile('column_name', 'placeholder...');</code></pre>
<h3>整数(integer)</h3>
<p>整形数字输入框</p>
<pre><code class="language-php">$create-&gt;integer('column_name', 'placeholder...');</code></pre>
<h3>下拉选框(select)</h3>
<p>单选框</p>
<pre><code class="language-php">$create-&gt;select('column_name', 'placeholder...')-&gt;options([
1 =&gt; 'foo',
2 =&gt; 'bar',
]);</code></pre>
<h3>下拉选框多选(multipleSelect)</h3>
<p>多选框</p>
<pre><code class="language-php">$create-&gt;multipleSelect('column_name', 'placeholder...')-&gt;options([
1 =&gt; 'foo',
2 =&gt; 'bar',
]);</code></pre>
<h3>标签(tags)</h3>
<pre><code class="language-php">$create-&gt;tags('column_name', 'placeholder...')-&gt;options([
1 =&gt; 'foo',
2 =&gt; 'bar',
]);</code></pre>
<h3>弹窗选择器(selectResource)</h3>
<p>通过<code>selectResource</code>表单可以构建一个弹窗选择器,可以从弹窗里面选择表格数据,并且支持数据筛选等操作。</p>
<pre><code class="language-php"> $form-&gt;selectResource('user')
-&gt;path('auth/users') // 设置表格页面链接
-&gt;options(function ($v) { // 显示已选中的数据
if (!$v) return $v;
$userModel = config('admin.database.users_model');
return $userModel::find($v)-&gt;pluck('name', 'id');
});
// 设置为多选
$form-&gt;selectResource('user')
-&gt;path('auth/users')
-&gt;multiple() // 设置为多选
-&gt;options(function ($v) {
...
});
// 限制最大选择数量
$form-&gt;selectResource('user')
-&gt;path('auth/users')
-&gt;multiple(3) // 最多选择3个选项
-&gt;options(function ($v) {
...
}); </code></pre>
<p>然后设置你的路由<code>app/Admin/routes.php</code></p>
<p>> {tip} 这里的添加路由只是示例,如果是新增的控制器需要加路由,如果路由已经存在则不需要再添加。</p>
<pre><code class="language-php">$router-&gt;resource('auth/users', 'UserController');</code></pre>
<p><code>auth/users</code>页面实现代码如下:</p>
<pre><code class="language-php">&lt;?php
use Dcat\Admin\Models\Administrator;
use Dcat\Admin\IFrameGrid;
use Dcat\Admin\Grid;
use Dcat\Admin\Controllers\AdminController;
class UserController extends AdminController
{
protected function iFrameGrid()
{
$grid = new IFrameGrid(new Administrator());
// 指定行选择器选中时显示的值的字段名称
// 指定行选择器选中时显示的值的字段名称
// 指定行选择器选中时显示的值的字段名称
// 如果表格数据中带有 “name”、“title”或“username”字段,则可以不用设置
$grid-&gt;rowSelector()-&gt;titleColumn('username');
$grid-&gt;id-&gt;sortable();
$grid-&gt;username;
$grid-&gt;name;
$grid-&gt;filter(function (Grid\Filter $filter) {
$filter-&gt;equal('id');
$filter-&gt;like('username');
$filter-&gt;like('name');
});
return $grid;
}
}</code></pre>
<p>效果</p>
<p><a href="{{public}}/assets/img/screenshots/select-resource.png" target="_blank">
<img src="{{public}}/assets/img/screenshots/select-resource.png" style="box-shadow:0 1px 6px 1px rgba(0, 0, 0, 0.12)" width="100%">
</a></p>
<h3>日期时间选择</h3>
<p>时间日期输入框</p>
<pre><code class="language-php">$create-&gt;datetime('column_name', 'placeholder...');</code></pre>
<h3>时间选择(time)</h3>
<p>时间输入框</p>
<pre><code class="language-php">$create-&gt;time('column_name', 'placeholder...');</code></pre>
<h3>日期选择</h3>
<pre><code class="language-php">$create-&gt;date('column_name', 'placeholder...');</code></pre>