laravel-admin 表單處理json格式字段


有一表某字段為json格式 結構如下

[{"name":"1","value":"2"},{"name":"2","value":"1"},{"name":"3","value":"1"},{"name":"4","value":"1"},{"name":"5","value":"1"},{"name":"6","value":"1"},{"name":"7","value":"1"},{"name":"8","value":"1"}]

 

如果想在編輯這個項目時展開挨個編輯而不是編輯整個字符串 需要做以下修改

首先在表對應的model文件中添加

protected $casts = [
        'item_detail' => 'json',
    ];

item_detail即為json串的字段名   添加這個屬性后laravel-admin會自動處理此字段對其進行json_decode

之后在控制器的form方法中

$form->table('item_detail','詳情', function ($form) {

            $form->text('name');
            $form->text('value');
        });

此時再進行編輯 就會顯示所有的鍵值對了  如果想要美化 再用form的其他方法對字段進行美化

 

 

注意 : 在model中設置對應的字段為json后  控制器detail(數據詳情)方法中的相應字段的回調方法中也會被自動json_decode

$show->field('item_detail', __('詳情'))->unescape()->as(function ($content) {
       /*
        model中沒有設置時 $content 為json串 設置后此時會自動轉化為數組
        */
//取出結構數據中所有item id $item_ids = []; foreach($content as $v){ $item_ids[] = $v['name']; } $item = Item::whereIn('id',$item_ids)->get(); $mapping_arr = []; foreach($item as $v){ $mapping_arr[$v->id] = $v->name; } $return = ''; foreach($content as $v){ if($v['value']==1){ $return = $return."<div class='alert alert-success' role='alert'>{$mapping_arr[$v['name']]}</div>"; }else{ $return = $return."<div class='alert alert-danger' role='alert'>{$mapping_arr[$v['name']]}</div>"; } } return $return; });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM