Я хочу показать поле имени с адреса json (используя algolia), как мне это сделать?
Я пробовал это:
$this->crud->addColumn([
'name' => "address",
'label' => 'Address',
'type' => 'array',
]);
Но не получается работать. Кроме того, он всегда возвращает ошибку.
В предварительном просмотре я тоже хочу показать полный адрес, но получил только возврат json.
заранее спасибо






Удалось поработать с Custom Fields.
Контроллер:
$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 и т. д.
Надеюсь, это кому-то поможет.
Всем, кто переходит с 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.
Спасибо, что поделились своим решением @rafael!