【问题标题】:How to get data array from json response exclude header in Laravel如何从 Laravel 中的 json 响应排除标头中获取数据数组
【发布时间】:2020-07-12 02:11:49
【问题描述】:

您好,我创建了一个小的 Laravel getter,如下所示。

public function getYearListAttribute(){
    $presentyear = intval($this->created_at->format('Y'));
    $myarray[] = array(
        'present' => $presentyear, 
        'past1' => $presentyear-1,
        'past2' => $presentyear-2,
        'past3' => $presentyear-3
    ); 
    return response()->json($myarray); 
} 

我这样称呼它为 from Blade。

{{$mymodel->yearlist}}

但是我收到了带有标题的响应,而不是只有数组列表。

 HTTP/1.0 200 OK Cache-Control: no-cache, private Content-Type: application/json Date: Sun, 12 Jul 2020 02:05:44 GMT [{"present":2020,"past1":2019,"past2":2018,"past3":2017}]

非常感谢您对此提供任何建议或指导,谢谢。

【问题讨论】:

    标签: json laravel


    【解决方案1】:

    你可以像下面这样返回响应

    return response()->json($myarray)->getContent()
    

    它只会返回数据

    【讨论】:

    • 亲爱的 Monika,getData() 不起作用,但 getContent() 起作用。但是打印结果 [{"present":2020,"past1":2019,"past2":2018,"past3":2017}] 操作像纯文本而不是数组。我无法像 {{ count($myModel->yearlist)}} 那样访问(参数必须是数组或实现 Countable 的对象)。
    • {{ count($myModel->yearlist)}}的目的是什么?
    【解决方案2】:

    我想不出任何你想从模型访问器返回完整 HTTP 响应的情况。通常,模型不会启动请求/响应更改,因为这通常是通过 Route > Controller(AJAX 或其他方式)完成的。在这种特殊情况下,您可以简单地返回您的变量:

    public function getYearlistAttribute() {
      $presentYear = intval($this->created_at->format('Y'));
    
      $myArray[] = [
        'present' => $presentYear, 
        'past1' => $presentYear-1,
        'past2' => $presentYear-2,
        'past3' => $presentYear-3
      ]; 
    
      return $myArray;
    }
    

    {{ $myModel->yearlist }} 的响应现在将只是您定义的数组,而不是 HTTP 响应。

    编辑:当然你不能简单地做{{ $myModel->yearlist }},因为那是一个数组。你需要循环它:

    @foreach($myModel->yearlist as $key => $year)
      {{ "{$key} - {$year}" }} // `present - 2020`, `past1 - 2019`, etc...
    @endforeach
    

    【讨论】:

    • 亲爱的蒂姆·刘易斯。已经尝试过但不起作用。我无法在刀片上打印输出,出现错误 htmlspecialchars() expects parameter 1 to be string.
    • 对,你有一个数组......你不能这样做{{ $myModel->yearlist }},你需要循环它:@foreach($myModel->yearlist as $year) {{ $year }} @endforeach
    猜你喜欢
    • 2019-10-06
    • 2017-07-02
    • 1970-01-01
    • 2017-07-17
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多