Laravel数组转换为json格式


Laravel array to json format

所以我试图将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>

您可以从控制器返回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>

此外,如果您的post模型上有敏感字段,您应该在模型类中排除这些字段,以防止它们在javascript检查器中显示:

class Post extends 'Eloquent {
    ...
    protected $hidden = array(
    'id',
    'created_at',
    'updated_at'
    );
    ...
}

如果您正在寻找将纯数组转换为json的"高级"方法,可以使用laravel集合。

collect(['a' => 1, 'b' => 2, 'c' => 3])->toJson();

使用函数toJson中内置的Eloquents将行获取为json。

<script type="text/javascript">
   var data = "{{ $posts->toJson() }}";
   console.log(data);
</script>

如果有一些字段不想包含,请将该字段添加到模型中的hidden属性中,如Jimmy所述。

<script type="text/javascript">
   let data = @json($posts);
   console.log(data);
</script>

您不需要做所有这些,只需使用php内置函数json_encode

$json = json_encode($posts);
    echo $json;
<script type="text/javascript">
   var data = "$json"; // ??
   console.log(data);
</script>