所以我试图将Laravel数组转换为json
,以便我可以通过javascript操作它。我不确定这是如何正确实现的。这是代码,到目前为止
@foreach ($posts as $post)
<div class="row">
<div class="col-md-8">
<div class="row">
<div class="col-md-8 tag">
<h4><strong><a href="{{{ $post>postName }}}">#{{String::title($posts->postName) }}</a></strong></h4>
</div>
</div>
<!-- ./ post title -->
</div>
</div>
<hr />
@endforeach
<script type="text/javascript">
var data = "{{ ($posts) }}"; // ??
console.log(data);
</script>
答案 0 :(得分:6)
您可以从控制器返回一个json_encoded数组,如下所示:
public function index()
{
$posts = Post::all();
$json = json_encode($posts);
return View::make('posts.index', compact('posts', 'json'));
}
然后,您可以在自己的视野中使用,例如:
<script type="text/javascript">
var data = {{ $json }};
console.log(data);
</script>
此外,如果您的帖子模型上有敏感字段,则应在模型类中排除这些字段,以防止它们显示在您的javascript检查器中:
class Post extends \Eloquent {
...
protected $hidden = array(
'id',
'created_at',
'updated_at'
);
...
}
答案 1 :(得分:5)
使用内置函数toJson
的Eloquents将行设为json。
<script type="text/javascript">
var data = "{{ $posts->toJson() }}";
console.log(data);
</script>
如果您不希望包含某些字段,请将字段添加到模型中的hidden
属性Jimmy mentioned。
答案 2 :(得分:4)
如果您正在寻找将普通数组转换为json的“高级”方法,则可以使用laravel集合。
collect(['a' => 1, 'b' => 2, 'c' => 3])->toJson();
答案 3 :(得分:0)
React.useEffect(() => {
if (update_name) {
setValues(oldValues =>({
...oldValues,
name: 'Pat', //ideally instead of hard coding new name you should use `update_name` passed as props.
}))
}
},[update_name])
答案 4 :(得分:-1)
你不需要做所有这些,只需使用php内置函数json_encode
$json = json_encode($posts);
echo $json;
<script type="text/javascript">
var data = "$json"; // ??
console.log(data);
</script>