数据表格动作
<h1>数据表格动作</h1>
<h2>表格动作基类 (GridAction)</h2>
<p>所有数据表格相关的动作类,包括<a href="model-grid-custom-tools.md">工具栏按钮</a>(<code>AbstractTool</code>)、
<a href="model-grid-actions.md">行操作</a>(<code>RowAction</code>)、<a href="model-grid-custom-tools.md#batch">批量操作</a>(<code>BatchAction</code>)
等等操作按钮的基类都继承自<code>Dcat\Admin\Grid\GridAction</code>类,而<code>GridAction</code>则继承自<a href="action.md">动作类基类</a>(<code>Action</code>)。</p>
<p>下面将介绍<code>GridAction</code>类中增加的方法或属性</p>
<h3>表格实例 (parent)</h3>
<p>通过 <code>parent</code> 属性可以获取到表格实例 (<code>Dcat\Admin\Grid</code>)。</p>
<p>下面简单的演示下用法,这段代码没有任何实际意义</p>
<pre><code class="language-php">use Dcat\Admin\Grid\GridAction
class MyAction extend GridAction
{
public function html()
{
$gridName = $this-&gt;parent-&gt;getName();
return ...;
}
...
}</code></pre>
<h3>表格页面地址 (resource)</h3>
<p>通过 <code>resource</code> 方法可以获取到表格页面的地址。</p>
<p>下面简单的演示下用法,这段代码没有任何实际意义</p>
<pre><code class="language-php">use Dcat\Admin\Grid\GridAction
class MyAction extend GridAction
{
public function html()
{
// 假如你的列表页路径为 /admin/users,则这里的值为 http://域名/admin/users
$path = $this-&gt;resource();
return ...;
}
...
}</code></pre>
<h2>工具栏操作按钮基类 (AbstractTool)</h2>
<p>表格工具栏按钮基类(<code>Dcat\Admin\Grid\Tools\AbstractTool</code>)继承自<code>GridAction</code>类。</p>
<p>下面将介绍<code>AbstractTool</code>类中增加的方法或属性</p>
<h3>按钮样式 (style)</h3>
<p>通过 <code>style</code> 属性可以设置工具栏按钮的类(<code>class</code>),默认值为 <code>btn btn-white waves-effect</code>。</p>
<p>下面简单的演示下用法</p>
<pre><code class="language-php">use Dcat\Admin\Grid\AbstractTool
class MyTool extend AbstractTool
{
protected $style = 'btn btn-outline-primary waves-effect';
...
}</code></pre>
<h2>批量操作基类 (BatchAction)</h2>
<p>表格工具栏按钮基类(<code>Dcat\Admin\Grid\Tools\BatchAction</code>)继承自<code>GridAction</code>类。</p>
<p>下面将介绍<code>BatchAction</code>类中增加的方法或属性</p>
<h3>获取选中行的主键数组 (getSelectedKeysScript)</h3>
<p>通过 <code>getSelectedKeysScript</code> 方法可以生成获取选中的行的主键数组的<code>JS</code>代码。</p>
<p>下面简单的演示下用法</p>
<pre><code class="language-php">use Dcat\Admin\Grid\BatchAction
class MyBatchAction extend BatchAction
{
/**
* {@inheritdoc}
*/
public function actionScript()
{
$warning = __('No data selected!');
return &lt;&lt;&lt;JS
var key = {$this-&gt;getSelectedKeysScript()}
if (key.length === 0) {
Dcat.warning('{$warning}');
return ;
}
Object.assign(data, {_key:key});
JS;
}
...
}</code></pre>
<h2>行操作基类 (RowAction)</h2>
<p>表格工具栏按钮基类(<code>Dcat\Admin\Grid\Tools\RowAction</code>)继承自<code>GridAction</code>类。</p>
<p>下面将介绍<code>RowAction</code>类中增加的方法或属性</p>
<h3>行数据 (row)</h3>
<p>通过 <code>row</code> 属性可以获取到当前行数据内容。</p>
<p>下面简单的演示下用法,这段代码没有任何实际意义</p>
<pre><code class="language-php">use Dcat\Admin\Grid\RowAction
class MyRowAction extend RowAction
{
public function html()
{
// 获取当前行的字段值
$username = $this-&gt;row-&gt;username;
// 转化为数组
$rowArray = $this-&gt;row-&gt;toArray();
return ...;
}
...
}</code></pre>
<h3>主键值 (getKey)</h3>
<p>通过 <code>getKey</code> 属性方法可以获取到当前行数据的主键值(<code>ID</code>)。</p>
<p>下面简单的演示下用法,这段代码没有任何实际意义</p>
<pre><code class="language-php">use Dcat\Admin\Grid\RowAction
class MyRowAction extend RowAction
{
public function html()
{
$id = $this-&gt;getKey();
return ...;
}
...
}</code></pre>