相关疑难解决方法(0)

使用ModelNotFoundException

我开始在Laravel,并希望发现更多关于使用错误处理,特别是ModelNotFoundException对象.

<?php
 class MenuController extends BaseController {

    function f() {
          try {
                $menus = Menu::where('parent_id', '>', 100)->firstOrFail();
            } catch (ModelNotFoundException $e) {
                $message = 'Invalid parent_id.';
                return Redirect::to('error')->with('message', $message);
            }
        return $menus;
    }
  }
?>
Run Code Online (Sandbox Code Playgroud)

在我的模型中:

<?php
 use Illuminate\Database\Eloquent\ModelNotFoundException;  

 class Menu extends Eloquent {
    protected $table = 'categories'; 
}

?>
Run Code Online (Sandbox Code Playgroud)

当然,对于我的例子,"类别"中没有记录,parent_id > 100这是我的单元测试.所以我期待着做点什么ModelNotFoundException.

如果我在浏览器中运行http://example.co.uk/f,我会收到:

Illuminate \ Database \ Eloquent \ ModelNotFoundException
No query results for model [Menu].
Run Code Online (Sandbox Code Playgroud)

laravel错误页面 - 这是预期的,但如何使用预定义的消息重定向到我的路由'错误'?即

<?php
// …
Run Code Online (Sandbox Code Playgroud)

laravel

14
推荐指数
2
解决办法
2万
查看次数

Laravel API,如何正确处理错误

任何人都知道在Laravel中处理错误的最佳方法是什么,有什么规则可以遵循?

目前我这样做:

public function store(Request $request)
{
  $plate = Plate::create($request->all());

  if ($plate) {
    return $this->response($this->plateTransformer->transform($plate));
  } else {
    // Error handling ?
    // Error 400 bad request
    $this->setStatusCode(400);
    return $this->responseWithError("Store failed.");
  }
}
Run Code Online (Sandbox Code Playgroud)

setStatusCode和responseWithError来自我的控制器的父亲:

public function setStatusCode($statusCode)
{
    $this->statusCode = $statusCode;

    return $this;
}

public function responseWithError ($message )
{
    return $this->response([
        'error' => [
            'message' => $message,
            'status_code' => $this->getStatusCode()
        ]
    ]);

}
Run Code Online (Sandbox Code Playgroud)

但这是处理API错误的好方法,我看到一些不同的方法来处理网络上的错误,最好的是什么?

谢谢.

api error-handling laravel

11
推荐指数
3
解决办法
1万
查看次数

你如何对Laravel中的每个响应强制执行JSON响应?

我正在尝试使用Laravel Framework构建一个REST api,我想要一种方法来强制API始终使用JSON进行响应,而不是通过以下方式执行此操作:

return Response::json($data);
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望每个响应都是JSON.有没有一个好方法呢?

更新:即使在未找到异常的异常情况下,响应也必须是JSON.

php rest json laravel

8
推荐指数
5
解决办法
5817
查看次数

标签 统计

laravel ×3

api ×1

error-handling ×1

json ×1

php ×1

rest ×1