【问题标题】:Trigger JSON response via Trait in Controller Larael通过控制器 Laravel 中的 Trait 触发 JSON 响应
【发布时间】:2020-11-13 13:54:40
【问题描述】:

我正在使用 Laravel 8 来构建 API,我有一条路线,出于问题的目的,它是.../api/fact,它获取一个随机事实。我有一个 FactsController.php 文件和两个特征,一个用于构建 JSON 响应,other 用于获取事实。由于某种原因,当从我的控制器(发出请求)中调用特征函数时,我没有在 Postman 中返回任何返回的 JSON...

特征/GetFact.php

<?php

namespace App\Traits;

use App\Traits\ApiResponse;

trait GetFact {

    use ApiResponse;

    /**
     * Get random fact
     *
     * get random fact
     */
    public function getRandomFact () {
      $this->getFact();
      
      $this->apiResponse([
        'msg' => "Fact..."
      ], 200, true);
    }
}

特征/ApiResponse.php

<?php

namespace App\Traits;

trait ApiResponse {

    /**
     * API Response
     *
     * Return a JSON response for our API with params
     */
    public function apiResponse ($data, $code, $success = false) {
      return response()->json(array_merge(['success' => $success], $data), $code);
    }

}

控制器/FactController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Traits\GetFact;

class FactsController extends Controller
{
    use GetFact;

    /**
     * Fact
     *
     * @param  Request  $request
     */
    public function fact()
    {
        $this->getRandomFact()
    }

}

当我向/api/fact 发出请求时,我应该会在我用msg 调用$this-&gt;apiResponse() 的位置列出返回的JSON,但我不是吗?就像return 似乎没有返回 JSON,因为它的作用域是 trait 而不是控制器,并且那里没有返回?我怎样才能实现列出的。

【问题讨论】:

    标签: laravel traits laravel-8


    【解决方案1】:

    你没有从你的 Controller 方法中“返回”任何东西。你必须返回一些东西,让他们成为内容的回应。此外,factgetRandomFact 不会返回任何内容,因此调用它们不会为您做任何事情。您还调用了 getFact 方法并且没有将返回分配给任何东西(如果它甚至返回任何东西)。

    【讨论】:

    • 如果我在$this-&gt;getRandomFact() 之前添加一个return 它将阻止它下面的其余代码执行,上面的附件纯粹是一个超薄的概念版本。他们确实返回了一些东西,但在这里错过了。我如何基本上从控制器运行$this-&gt;getRandomFact(),并让 IT 返回 JSON??
    • 您需要提供您的实际代码,否则会发生这种情况,我们只能取消您所显示的内容......但您只需调用该方法并返回结果......所以请将您的代码更新为实际可用的代码:)
    猜你喜欢
    • 2017-01-28
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-12
    • 2015-11-02
    • 2012-07-27
    • 2019-12-14
    相关资源
    最近更新 更多