php使用textarea存储json格式的配置数据
json是个好东西!
话说写过的东西根本记不住啊,今天又用到了再次记录一下吧,去年用ProcessWire做一个库存模块的时候遇到的一个场景:前端用的是jQuery DataTables插件用来显示数据,字段列不是固定的可以自定义要显示的字段,所以在后台我用的是Textarea存储了json格式数据,这样以来存储调用起来就很方便了,而且字段对象在ProcessWire中的处理是非常方便的,用Api可以很简单地完成对字段的各种处理。
json配置数据:
{"datatable":{"show":["stock_area","product","model","quantity","unit","fee"],"filter":["id","title","headline","stock_area.title","product.title","model","quantity","fee","summary"],"ignoreOrders":[3],"lengthMenu":[25, 50, 100, 200],"pageLength":25}}
这里存储了一些信息:show
后面是用来显示的字段名;filter
是可以检索的字段名;ignoreOrders
是不参与排序的字段索引;lengthMenu
是分页的每页显示的数量;pageLength
是每页默认显示数量。
将字符转成json对象:
$object = json_decode(htmlspecialchars_decode($page->jsondata));
Textarea多行文本的逐行读取方法:
2017-10-18更新:
$keyword_list = trim($_REQUEST['keywords']); $keyword_arr = explode("\r\n", $keyword_list);
这个地方需要注意是要去除textarea 前后的空格,否则会多出一个空行,或者使用explode也是可以的,只是不能用\r\n只能用双引号,不能用单引号。
$rules = nl2br($page->jsondata); $rules = explode('<br />', $rules); if(count($rules) > 0) { foreach($rules as $rule) { var_dump($rule); } }