Переименовать ключ массива - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть таблица, из которой я получаю данные для их вывода. Таблица состоит из группы персональных данных, названных следующим образом: имя, фамилия, номер телефона, адрес электронной почты, birthYear, StartAt и т. Д. c ...

Когда я хочу вывести данные в моем представлении на laravel, я получаю их без проблем, но вместо того, чтобы писать каждую запись вручную, я использовал циклы. При использовании @foreach, я просто получаю имя ранее назначенного столбца таблицы, поэтому, в основном, при выводе значений я получаю «name» вместо «Name», «lastName» вместо «Last Name» et c. Кроме того, у меня есть несколько имен столбцов, состоящих всего из 3 букв, таких как «pro», которые могут означать тысячи вещей.

Итак, как мне переименовать эти ключи, чтобы мой вывод был удобочитаемым для человека?

@foreach($data->getAttributes() as $key => $value)
   @if(!empty($value))
       <tr><td>{{ $key }}</td><td>{{ $value }}</td></tr>
   @endif
@endforeach

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

Вам нужно где-то хранить это имя (т.е. в таблице базы данных) и извлекать его вместе с коллекцией.

Основа c и, возможно, наивный пример того, как это сделать (без учета архитектурных лучшие практики), для таблицы типа:

CREATE TABLE data (
    ...
    name VARCHAR(255),
    nameText VARCHAR(255),
    content TEXT,
    ...

Где у вас была такая запись:

[
    'name' => 'lastName',
    'nameText' => 'Last Name',
    'content' => 'This is your last name
]

В вашем контроллере может быть что-то подобное:

$data = Model::get();
return view('my-view', ['data' => $data]);

Тогда, по вашему мнению:

@foreach($data as $item)
    <tr><td>{{ $item->nameText }}</td><td>{{ $item->content}}</td></tr>
@endforeach
0 голосов
/ 13 февраля 2020

Для этого есть два решения. Первый просто использует условия if else внутри вашего лезвия:

@foreach($data->getAttributes() as $key => $value)
    @if(!empty($value))
        @if($key === 'name')
            <tr><td>Name</td><td>{{ $value }}</td></tr>
        @elseif($key === 'lastName')
            <tr><td>Last Name</td><td>{{ $value }}</td></tr>           
        @else
            <tr><td>{{ $key }}</td><td>{{ $value }}</td></tr>
        @endif
   @endif
@endforeach

Другое решение состоит в использовании ТАМОЖЕННЫХ ЧАСТЕЙ для каждого отдельного ключа.

Позволяет определить настраиваемые части для ваших ключей:

// partials/display_data/name.blade.php
<tr><td>Name</td><td>{{ $value }}</td></tr>
// partials/display_data/lastName.blade.php
<tr><td>Last Name</td><td>{{ $value }}</td></tr>

В конце концов, вы можете просто сказать:

@foreach($data->getAttributes() as $key => $value)
    @includeIf(!empty($value), "partials.custom_data.{$key}", compact('value'))
@endforeach
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...