dcat-admin

dcat-admin


JSON格式字段处理

<h1>JSON格式字段处理</h1> <p><code>dcat-admin</code>的表单提供了下面几个组件来处理<code>JSON</code>格式的字段,方便用来处理<code>JOSN</code>格式的对象、一维数组、二维数组等对象。</p> <h2>键值对象 (keyValue)</h2> <p><img src="{{public}}/assets/img/screenshots/key-value.png" alt="" /></p> <p>如果你的字段存储的是不固定<code>键</code>的<code>{&amp;quot;field&amp;quot;:&amp;quot;value&amp;quot;}</code>格式,可以用<code>keyValue</code>组件:</p> <pre><code class="language-php">$form-&amp;gt;keyValue('column_name'); // 设置校验规则 $form-&amp;gt;keyValue('column_name')-&amp;gt;rules('required|min:5');</code></pre> <p>自定义键名以及键值标题翻译</p> <pre><code class="language-php">$form-&amp;gt;keyValue(...)-&amp;gt;setKeyLabel('键名')-&amp;gt;setValueLabel('键值');</code></pre> <h2>固定键值对象 (embeds)</h2> <p><img src="{{public}}/assets/img/screenshots/embeds.png" alt="" /></p> <p>用于处理<code>mysql</code>的<code>JSON</code>类型字段数据或者<code>mongodb</code>的<code>object</code>类型数据,也可以将多个<code>field</code>的数据值以<code>JSON</code>字符串的形式存储在<code>mysql</code>的字符串类型字段中</p> <p>适用于有固定键值的<code>JSON</code>类型字段</p> <pre><code class="language-php">$form-&amp;gt;embeds('column_name', function ($form) { $form-&amp;gt;text('key1')-&amp;gt;required(); $form-&amp;gt;email('key2')-&amp;gt;required(); $form-&amp;gt;datetime('key3'); $form-&amp;gt;dateRange('key4', 'key5', '范围')-&amp;gt;rules('required'); })-&amp;gt;saving(funtion ($v) { // 转化为json格式存储 return json_encode($v); }); // 自定义标题 $form-&amp;gt;embeds('column_name', '字段标题', function ($form) { ... });</code></pre> <p>回调函数里面构建表单元素的方法调用和外面是一样的。</p> <h2>一维数组 (list)</h2> <p><img src="{{public}}/assets/img/screenshots/form-list.png" alt="" /></p> <p>如果你的字段是用来存储<code>[&amp;quot;foo&amp;quot;, &amp;quot;Bar&amp;quot;]</code>格式的一维数组, 可以使用<code>list</code>组件:</p> <pre><code class="language-php">$form-&amp;gt;list('column_name'); // 设置校验规则 $form-&amp;gt;list('column_name')-&amp;gt;rules('required|min:5'); // 设置最大和最小元素个数 $form-&amp;gt;list('column_name')-&amp;gt;max(10)-&amp;gt;min(5);</code></pre> <h2>二维数组 (table)</h2> <p><img src="{{public}}/assets/img/screenshots/form-table.png" alt="" /></p> <p>如果某一个字段存储的是<code>json</code>格式的二维数组,可以使用<code>table</code>表单组件来实现快速的编辑:</p> <pre><code class="language-php">$form-&amp;gt;table('column_name', function ($table) { $table-&amp;gt;text('key'); $table-&amp;gt;text('value'); $table-&amp;gt;textarea('desc'); })-&amp;gt;saving(function ($v) { return json_encode($v); });</code></pre> <p>这个组件类似于<code>hasMany</code>组件,不过是用来处理单个字段的情况,适用于简单的二维数据。</p> <h2>二维数组 (array)</h2> <p><img src="{{public}}/assets/img/screenshots/has-many.png" alt="" /></p> <p>如果某一个字段存储的是<code>json</code>格式的二维数组,并且字段比较多,可以使用<code>array</code>表单组件来实现快速的编辑:</p> <pre><code class="language-php">$form-&amp;gt;array('column_name', function ($table) { $table-&amp;gt;text('key'); $table-&amp;gt;text('value'); $table-&amp;gt;textarea('desc'); })-&amp;gt;saveAsJson();</code></pre>

页面列表

ITEM_HTML