我有一个包含多个字段的模型,包括两个存储字典的JSON列表的文本字段。其中一个存储图像数据的工作正常;但是当我尝试从刀片模板访问该属性时,第二个存储带有链接的dicts列表会返回Undefined property: stdClass::$title
。
如果删除对links属性的调用,所有其他属性(包括转换为对象数组的图像JSON)都可以正常呈现。
我已尝试dd()
链接属性,它既显示了它的设置,又显示了一个数组,并且它充满了两个对象我失败时尝试访问的属性(标题,网址)。
但是,当我尝试实际访问它们时,我会获得Undefined property
以获取我尝试访问的确切属性。
想知道是否有人遇到过这样的事情?真正奇怪的是,图像JSON数据正在呈现而没有任何问题。它全部与路径模型绑定捆绑在一起,经过验证可以正常工作。
public function getLinksAttribute() {
if (!empty($this->attributes['links'])) {
return json_decode($this->attributes['links']);
}
}
public function getImagesAttribute() {
if (!empty($this->attributes['images'])) {
return json_decode($this->attributes['images']);
}
}
@if (is_array($artist->links))
<div class="links">
<h4>Links</h4>
<ul>
@foreach ($artist->links as $link)
{{ $link->title }}, {{ $link->url }}
@endforeach
</ul>
</div>
@endif
@if (is_array($artist->images))
<ul class="images">
@foreach ($artist->images as $image)
<li>{!! Html::image(Html::buildS3Url(array(
"basedir" => "artists", "id" => $artist->id, "prefix" => $image->prefix,
"extension" => $image->extension, "conversion" => "display")
), $artist->name) !!}</li>
@endforeach
</ul>
@endif
dd()
### links (doesn't work)
#tinker output
links: "[{"'title'":"test","'url'":"http:\/\/test.com"}]",,
# dd()
array:1 [▼
0 => {#308 ▼
+"'title'": "test"
+"'url'": "http://test.com"
}
]
### images (works)
# tinker output
images: "[{"prefix":1440693993,"extension":"png"},{"prefix":1440697822,"extension":"png"}]"
# dd()
array:2 [▼
0 => {#308 ▼
+"prefix": 1440693993
+"extension": "png"
}
1 => {#307 ▼
+"prefix": 1440697822
+"extension": "png"
}
]
答案 0 :(得分:2)
&#34;未定义的属性:stdClass :: $ title&#34;
似乎在您的某个链接中缺少标题属性
您可以通过以下方式查看:
@foreach ($artist->links as $link)
<?php if(property_exists($link, "title")) : ?>
{{ $link->title }}
<?php else : ?>
NO TITLE [DEBUG: {{ dd($link) }}]
<?php endif; ?>, {{ $link->url }}
@endforeach
我也找到了一件事:
links: "[{"'title'":"test","'url'":"http:\/\/test.com"}]",,
您的元素字段为&#39; 标题&#39; (带&#39;),但必须为&#34; title& #34;:&#34;测试&#34;
您可以通过删除参数名称中的单引号来修复它。