php - Laravel 背包,在列中显示地址(Json)
问题描述
我想显示地址 json 中的名称字段(使用 algolia),我该怎么做?
我试过这个:
$this->crud->addColumn([
'name' => "address",
'label' => 'Address',
'type' => 'array',
]);
但无法工作。此外,它总是返回错误。
在预览中,我也想显示完整地址,但只得到 json 返回。
提前致谢
解决方案
管理使用自定义字段。
控制器:
$this->crud->addColumn([
'name' => 'address', //db field
'label' => "Address",
'type' => 'customAddress' //name of custom created custom field
]);
在以下位置创建自定义字段:resources\views\vendor\backpack\crud\columns 我将其命名为“customAddress.blade.php”
自定义字段:
{{-- customAddress--}}
<?php $object = (object) json_decode($entry['address'], true); ?>
<span><?php echo $object->value; ?></span>
您也可以使用 foreach 显示,例如 $object->name、$object->country 等...
希望这可以帮助某人。
编辑 1 - Backpack 4.1 更新专栏
对于从 Backpack 4.0 迁移到 4.1 的每个人,您也应该更新此自定义列。
这是 Backpack v4.1 的更新代码。在 v4.1 中,列是否被转义是有区别的。
我还添加了一个检查以防 JSON 解析错误。
{{-- customAddress--}}
@php
$value = data_get($entry, $column['name']);
$column['escaped'] = $column['escaped'] ?? false;
json_decode($entry['address']);
if(json_last_error() == JSON_ERROR_NONE){
$object = (object) json_decode($entry['address'], true);
$value = $object->value;
} else{
$value = $entry['address'];
}
@endphp
<span>
<span class="d-inline-flex">
@includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_start')
@if($column['escaped'])
{{ $value }}
@else
{!! $value !!}
@endif
@includeWhen(!empty($column['wrapper']), 'crud::columns.inc.wrapper_end')
</span>
</span>
希望这对从 Backpack 4.0 迁移的人有所帮助。
推荐阅读
- python - 列表索引超出范围(拆分和连接)
- android - getContext().getResources() 来自不继承自 Application 的类
- r - 安装包失败。错误:系统命令错误,退出状态:-1,stdout + stderr empty,
- web-scraping - Google 表格中的 IMPORTXML 函数
- javascript - 如何修复可能导致新元素停留在 `:hover` 状态的 IE11 错误?
- python - 为什么我的 sqlite 表文件大小比预期大 10 倍?
- c++ - 函数参数传递的输出跟踪
- javascript - 以编程方式从嵌套对象和数组的巨大 JSON 中解构特定属性的最佳且最有效的方法
- python - 如何优雅地在循环中添加列表元素?
- spring-batch - 在 FlatFileItemReader 自定义 bufferedReader 实例中检测作业何时停止