gpt4 book ai didi

laravel - 如何从不是 Controller 方法的方法发送响应?

转载 作者:行者123 更新时间:2023-12-02 09:53:07 25 4
gpt4 key购买 nike

我有一个 Controller.php,其 show($id) 方法被路由命中。

public function show($id)
{
// fetch a couple attributes from the request ...

$this->checkEverythingIsOk($attributes);

// ... return the requested resource.
return $response;
}

现在,在 checkEverythingIsOk() 中,我执行一些验证和授权操作。这些检查对于同一 Controller 内的多个路由是通用的,因此我想提取这些检查并在每次需要执行相同操作时调用该方法。

问题是,我无法通过此方法发送一些响应:

private function checkEverythingIsOk($attributes)
{
if (checkSomething()) {
return response()->json('Something went wrong'); // this does not work - it will return, but the response won't be sent.
}

// more checks...
return response()->callAResponseMacro('Something else went wrong'); // does not work either.

dd($attributes); // this works.
abort(422); // this works too.
}

注意:是的,我知道通常可以使用中间件或验证服务在请求到达 Controller 之前执行检查,但我不想这样做。我需要这样做。

最佳答案

从 Laravel 5.6 开始,您现在可以使用例如 response()->json([1])->send();

它不需要是 Controller 方法的返回值。

请注意,调用 send() 不会终止输出。您可能需要在 send() 之后手动调用 exit;

关于laravel - 如何从不是 Controller 方法的方法发送响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38554809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com