将元标记关键字显示为来自数据库的 JSON 数据似乎不起作用

Displaying Meta Tag Keywords as JSON Data From Database Not Seem To Be Working

我正在使用 Laravel 5.8,我想将我的页面元关键字更新为 JSON 数据。

所以我创建了一个名为 prd_meta_keywords 的新列并将其结构设置为 JSON

现在我可以像这个例子一样成功地将 JSON 数据插入到该列中:

[
    "video product",
    "new product"
]

为了在 Blade 上检索这些数据,我这样做了:

@section('meta')
   <meta name="keywords" content="@if(!empty($product->prd_meta_keywords)) @if(is_array($product->prd_meta_keywords) || is_object($product->prd_meta_keywords)) @foreach(json_decode($product->prd_meta_keywords) as $keyword) {{$keyword}}{{$loop->remaining ? ',' : ''}} @endforeach @endif @endif">
@endsection

但是如您所见,它不起作用并且不显示页面源代码上的关键字:

<meta name="keywords" content="  ">

但是我可以从 @dd(json_decode($product->prd_meta_keywords)).

中正确地得到结果

那么这里出了什么问题?如何在 Blade 中正确检索此 JSON 数据作为关键字标签?

你可以在那里使用 Laravel Casting

只需 cast 您在相应模型中的专栏。因此它会自动将数据存储在 JSON 中,并在检索时自动将其转换为 PHP 数组。

 protected $casts = [
     'prd_meta_keywords' => 'array',
 ];

检索数组后,您可以轻松地在 meta 中内爆,

<meta name="keywords" content="{{ ($product->prd_meta_keywords) ? implode(",", $product->prd_meta_keywords) : ''}}">

让我知道结果。