#php #json #notifications #blade #laravel-5.3
#php #json #уведомления #laravel-блейд #laravel-5.3
Вопрос:
У меня есть эти данные в text
поле mysql:
{"message":"New comment from pp on one of your photos.","action":"/photos/9372"}
Он записывается в базу данных с помощью этой функции (уведомление laravel):
public function toArray($notifiable)
{
return [
'message' => 'New comment from '.Auth::user()->username.' on one of your photos.',
'action' => '/photos/'.$this->comment->photo_id
];
}
В документации говорится:
"The returned array will be encoded as JSON and stored in the data column of your notifications table."
Затем я извлекаю данные следующим образом:
$notifications = Auth::user()->notifications()->paginate(30);
return view('home.index')->with('notifications',$notifications);
Как я могу отобразить содержимое этого json
array
(?) в представлении блейда? Я могу var_dump()
это, но не отображать. Это всегда undefinded index
или другие ошибки.
@forelse($notifications as $n)
@php
$data = $n->data;
@endphp
{!! var_dump($data) !!}
@empty
nothing
@endforelse
Редактировать
Когда я пытаюсь получить json_decode
данные, он сообщает мне, что это массив:
{!! var_dump(json_decode($data)) !!}
json_decode() expects parameter 1 to be string, array given
print_r()
говорит то же самое:
{!! print_r($data) !!}
Array ( [message] => New comment from pp on one of your photos. [action] => /photos/9372 ) 1
var_dump()
говорит, что это массив:
{!! var_dump($data) !!}
array(2) { ["message"]=> string(42) "New comment from pp on one of your photos." ["action"]=> string(12) "/photos/9372" }
Но когда я хочу отобразить определенное значение, оно не работает:
{!! $data["message"] !!}
Undefined index: message
Ответ №1:
Убедитесь, что вы просматриваете массив уведомлений при попытке получить доступ к части массива сообщений:
@foreach ($notifications as $notification)
{{ $notification->data['message'] }}
@endforeach