Laravel Backpack, Показать адрес (Json) в столбце

Я хочу показать поле имени с адреса json (используя algolia), как мне это сделать?

Я пробовал это:

$this->crud->addColumn([
     'name' => "address",
     'label' => 'Address',
     'type' => 'array',
]);

Но не получается работать. Кроме того, он всегда возвращает ошибку.

В предварительном просмотре я тоже хочу показать полный адрес, но получил только возврат json.

Laravel Backpack, Показать адрес (Json) в столбце

заранее спасибо

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
1 396
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Удалось поработать с 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 и т. д.

Надеюсь, это кому-то поможет.

Редактировать 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.

Спасибо, что поделились своим решением @rafael!

tabacitu 02.01.2019 09:35

Другие вопросы по теме