动作以及表单响应
<h1>动作以及表单响应</h1>
<p><a href="action.md">动作</a>、<a href="model-form.md">数据表单</a>以及<a href="widgets-form.md">工具表单</a>的响应方法都是同一套方法。</p>
<p>在类中可以通过 <code>$this-&gt;response()</code> 获取到 <code>Dcat\Admin\Http\JsonResponse</code>对象并响应数据到前端</p>
<pre><code class="language-php">return $this-&gt;response()-&gt;success('成功!');
// 等同于
use Dcat\Admin\Admin;
use Dcat\Admin\Http\JsonResponse;
return JsonResponse::make()-&gt;success('成功!');
return Admin::make()-&gt;success('成功!');</code></pre>
<p>如果是在控制器中使用,需要加上<code>send</code>方法</p>
<pre><code class="language-php">public function index()
{
return JsonResponse::make()-&gt;success('成功!')-&gt;send();
}</code></pre>
<h3>功能</h3>
<p>下面介绍一下 <code>JsonResponse</code> 的主要用法</p>
<h4>展示成功信息</h4>
<p>此方法接收一个<code>string</code>类型参数</p>
<pre><code class="language-php">$this-&gt;response()-&gt;success('成功!');</code></pre>
<h4>展示错误信息</h4>
<p>此方法接收一个<code>string</code>类型参数</p>
<pre><code class="language-php">$this-&gt;response()-&gt;error('出错了!');</code></pre>
<h4>展示警告信息</h4>
<p>此方法接收一个<code>string</code>类型参数</p>
<pre><code class="language-php">$this-&gt;response()-&gt;warning('警告');</code></pre>
<h4>跳转</h4>
<p>此方法接收一个<code>string</code>类型参数,可以与<code>success</code>、<code>error</code>、<code>warning</code>等方法同时使用</p>
<pre><code class="language-php">$this-&gt;response()-&gt;redirect('auth/users');</code></pre>
<h4>跳转 (location)</h4>
<p><code>1</code>秒后自动跳转(非局部刷新),此方法接收一个<code>string</code>类型参数</p>
<pre><code class="language-php">$this-&gt;response()-&gt;success('操作成功')-&gt;location('auth/users');</code></pre>
<p>如果不传参则刷新当前页面</p>
<pre><code class="language-php">$this-&gt;response()-&gt;success('操作成功')-&gt;location();</code></pre>
<h4>刷新当前页面</h4>
<p>此方法可以与<code>success</code>、<code>error</code>、<code>warning</code>等方法同时使用</p>
<pre><code class="language-php">$this-&gt;response()-&gt;success('xxx')-&gt;refresh();</code></pre>
<h4>下载</h4>
<p>此方法接收一个<code>string</code>类型参数</p>
<pre><code class="language-php">$this-&gt;response()-&gt;download('auth/users?_export_=1');</code></pre>
<h4>展示确认弹窗</h4>
<pre><code class="language-php">// 成功
$this-&gt;response()-&gt;alert(true)-&gt;success('...')-&gt;detail('详细内容');
// 错误
$this-&gt;response()-&gt;alert(true)-&gt;error('...')-&gt;detail('详细内容');
// 警告
$this-&gt;response()-&gt;alert(true)-&gt;warning('...')-&gt;detail('详细内容');
// 提示
$this-&gt;response()-&gt;alert(true)-&gt;info('...')-&gt;detail('详细内容');</code></pre>
<h4>返回HTML</h4>
<p>此方法可接收一个<code>string</code>、<code>Renderable</code>、<code>Htmlable</code>类型参数,可以与<code>success</code>、<code>error</code>、<code>warning</code>等方法同时使用</p>
<p>> {tip} 响应的<code>HTML</code>字符默认会被置入动作按钮元素上,如果需要自己控制,则覆写<a href="#handleHtmlResponse">handleHtmlResponse</a>方法即可。</p>
<pre><code class="language-php">$this-&gt;response()-&gt;html('&lt;a&gt;a标签&lt;/a&gt;');
$this-&gt;response()-&gt;html(view('...'));</code></pre>
<h4>执行JS代码</h4>
<p>此方法接收一个<code>string</code>类型参数,可以与<code>success</code>、<code>error</code>、<code>warning</code>等方法同时使用</p>
<pre><code class="language-php">$this-&gt;response()-&gt;script(
&lt;&lt;&lt;JS
console.log('response', response, target);
JS
);</code></pre>
<h3>根据条件判断是否调用</h3>
<p>上面所有功能接口都支持<code>if</code>模式,如</p>
<pre><code class="language-php">// 如果 $condition 的值为 真,则调用 refresh 方法
$this-&gt;response()-&gt;success(...)-&gt;ifRefresh($condition);
$this-&gt;response()-&gt;success(...)-&gt;ifLocation($condition, 'auth/users');
// $condition 也可以是闭包
$this-&gt;response()-&gt;success(...)-&gt;ifRefresh(function () {
return true;
});</code></pre>