Lumen FatalThrowableError 验证
Lumen FatalThrowableError on validation
我已经为此苦苦挣扎了一段时间。
这是我得到的代码。
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'name' => 'required|max:100'
]);
if ($validator->fails()) {
//do something
}
}
问题是我遇到了一个 FatalThrowableError,并显示以下消息:
Call to a member function parameter() on array
我找不到我做错了什么。我会很感激这里的一些帮助。
而且,我之前已经进行了此验证:
$this->validate($request, [
'name' => 'required|unique:developers|max:100'
]);
但是这个问题是,我不知道如何在验证失败时捕捉到。这样使用时是否可以捕获验证失败?
使用版本:"laravel/lumen-framework":“5.2.*”
A FatalThrowableError
异常是低级异常,通常由 symfony 调试 ErrorHandler
抛出。在 lumen 中,队列工作者、PhpEngine、控制台内核和路由管道也使用它。
确保以下内容
- 您已将
.env.example
复制到 .env
- 如果您正在使用 Facades,请确保通过取消注释行在
bootstrap/app.php
中启用它。
$app->withFacades();
在 Lumen 5.2.8 中,以下任何一个都可以工作。
以下实际上 return 一个有效的 JSON 对象,但有错误。您没有详细说明您的用例为什么这还不够。像这样使用 validate
调用的好处是它实际上 return 是一个 422
http 状态代码,这意味着一个未处理的实体。
$app->get('/', function (Request $request) {
$this->validate($request, [
'name' => 'required'
]);
});
使用 facade 也可以,尽管 return 是一个 200
状态码。
$app->get('/', function (Request $request) {
$validator = Validator::make($request->only(['name']), [
'name' => 'required'
]);
if ($validator->fails()) {
return ['error' => 'Something went wrong'];
}
});
如果您仍然无法正确使用 Validator::make
,您可以使用捕获默认验证异常。感觉有点hacky。
$app->get('/', function (Request $request) {
try {
$this->validate($request, [
'name' => 'required'
]);
} catch (\Illuminate\Validation\ValidationException $e) {
// do whatever else you need todo for your use case
return ['error' => 'We caught the exception'];
}
});
我已经为此苦苦挣扎了一段时间。 这是我得到的代码。
public function store(Request $request) { $validator = Validator::make($request->all(), [ 'name' => 'required|max:100' ]); if ($validator->fails()) { //do something } }
问题是我遇到了一个 FatalThrowableError,并显示以下消息:
Call to a member function parameter() on array
我找不到我做错了什么。我会很感激这里的一些帮助。 而且,我之前已经进行了此验证:
$this->validate($request, [
'name' => 'required|unique:developers|max:100'
]);
但是这个问题是,我不知道如何在验证失败时捕捉到。这样使用时是否可以捕获验证失败?
使用版本:"laravel/lumen-framework":“5.2.*”
A FatalThrowableError
异常是低级异常,通常由 symfony 调试 ErrorHandler
抛出。在 lumen 中,队列工作者、PhpEngine、控制台内核和路由管道也使用它。
确保以下内容
- 您已将
.env.example
复制到.env
- 如果您正在使用 Facades,请确保通过取消注释行在
bootstrap/app.php
中启用它。
$app->withFacades();
在 Lumen 5.2.8 中,以下任何一个都可以工作。
以下实际上 return 一个有效的 JSON 对象,但有错误。您没有详细说明您的用例为什么这还不够。像这样使用 validate
调用的好处是它实际上 return 是一个 422
http 状态代码,这意味着一个未处理的实体。
$app->get('/', function (Request $request) {
$this->validate($request, [
'name' => 'required'
]);
});
使用 facade 也可以,尽管 return 是一个 200
状态码。
$app->get('/', function (Request $request) {
$validator = Validator::make($request->only(['name']), [
'name' => 'required'
]);
if ($validator->fails()) {
return ['error' => 'Something went wrong'];
}
});
如果您仍然无法正确使用 Validator::make
,您可以使用捕获默认验证异常。感觉有点hacky。
$app->get('/', function (Request $request) {
try {
$this->validate($request, [
'name' => 'required'
]);
} catch (\Illuminate\Validation\ValidationException $e) {
// do whatever else you need todo for your use case
return ['error' => 'We caught the exception'];
}
});