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

Posted

技术标签:

【中文标题】将元标记关键字显示为数据库中的 JSON 数据似乎不起作用【英文标题】:Displaying Meta Tag Keywords as JSON Data From Database Not Seem To Be Working 【发布时间】:2022-01-17 14:24:06 【问题描述】:

我正在使用 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-&gt;prd_meta_keywords)) 正确获取结果。

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

【问题讨论】:

【参考方案1】:

你可以在那里使用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) : ''">

让我知道结果。

【讨论】:

它工作得很好,但我也想知道我的代码出了什么问题...... 可以分享@dd(json_decode($product-&gt;prd_meta_keywords))的结果吗? 我认为问题是这个条件@if(is_array($product-&gt;prd_meta_keywords) || is_object($product-&gt;prd_meta_keywords)) 只需删除这个条件。还将@foreach(json_decode($product-&gt;prd_meta_keywords) as $keyword) 替换为@foreach(json_decode($product-&gt;prd_meta_keywords, true) as $keyword)。让我知道结果。 如果我删除它,我会得到Invalid argument supplied for foreach() 您是否也将@foreach(json_decode($product-&gt;prd_meta_keywords) as $keyword) 替换为@foreach(json_decode($product-&gt;prd_meta_keywords, true) as $keyword)

以上是关于将元标记关键字显示为数据库中的 JSON 数据似乎不起作用的主要内容,如果未能解决你的问题,请参考以下文章

尝试将元数据添加到对象时,AWS S3 管道中的“无效 JSON”

使用 SWIFT 3 的单元格不显示没有 html 标记的更新 JSON

React Native - 来自 JSON 的地图数据可以显示为文本,但不能显示为地图标记坐标

将元数据添加到RESTful JSON响应的最佳做法是什么?

如何根据 JSON 数据中的 lat 和 long 使地图居中,当单击标记时,会弹出一个弹出窗口并在 vueJS 中显示名称?

使用 SwiftyJSON 将元组数组转换为 JSON 字符串