想象一下,我有PostController
如下:
class PostsController extends \App\Http\Controllers\Controller
{
public function store(Request $request) {
$newClass = new myNewClass();
$newClass->check();
// ...
// continue to store the post
// ...
}
}
现在我希望$newClass->check()
停止操作,如果我正在检查那里发生的事情。这只是一个示例代码,所提到的方法的行为不仅仅是那个。
在我的检查方法中我有:
class MyNewClass
{
public function check() {
// I want to send the response directly from here
// but it doesn't work
// I tried:
// return response()->json(['error' => 'auth error'], 403);
// the line above is not working, that's all I want
// NOTE: abort(403) works here
// NOTE: dd('xxxxx') works here
// but response() doesn't
}
}
我可以通过返回PostsController
:
return $newClass->check();
但是这总是会停止存储方法并返回。
我怎样才能做到这一点?
P.S:我想在我的check()
方法中发送JSON响应,我不想在我的控制器中使用这个逻辑,这就是我这样做的原因。
答案 0 :(得分:1)
您可以将其置于if
状态,如下所示:
if(!$newClass->check()) {
return false; //replace this with whatever you want
}
这样它会检查$newClass->check()
是否返回false
,如果是,它将停止在store
方法内执行。
答案 1 :(得分:-1)
在MyClass文件中
class MyNewClass
{
public function check() {
return false;
// I want to send the response directly from here
// but it doesn't work
// I tried:
// return response()->json(['error' => 'auth error'], 403);
// the line above not working, that's all I want
// NOTE: abort(403) works here
// also dd('xxxxx') works here
// but response() doesn't
return response();
}
}
然后在您的控制器中检查返回
class PostsController extends \App\Http\Controllers\Controller
{
public function store(Request $request) {
$newClass = new myNewClass();
if($newClass->check()) {
// ...
// continue to store the post
// ...
return $newClass->check();
}
}
}
我认为此代码可以与您合作
注意:如果工作正常,请尝试使用此代码以获得更好的性能。
class PostsController extends \App\Http\Controllers\Controller
{
public function store(Request $request) {
$newClass = new myNewClass();
if($return = $newClass->check()) {
// ...
// continue to store the post
// ...
return $return;
}
}
}