Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 验证时的管腔fatalthrowable错误_Php_Validation_Fatal Error_Lumen - Fatal编程技术网

Php 验证时的管腔fatalthrowable错误

Php 验证时的管腔fatalthrowable错误,php,validation,fatal-error,lumen,Php,Validation,Fatal Error,Lumen,我已经为此挣扎了一段时间了。 这是我的密码 问题是,我的脸上出现了一个FatalThrowable错误,并显示以下信息: 对数组上的成员函数参数()的调用 我找不到我做错了什么。我非常感谢你的帮助。 而且,我之前也进行过验证,验证有效: $this->validate($request, [ 'name' => 'required|unique:developers|max:100' ]); 但这一个的问题是,当验证失败时,我不知道如何捕捉。以这种方

我已经为此挣扎了一段时间了。 这是我的密码

问题是,我的脸上出现了一个FatalThrowable错误,并显示以下信息:

对数组上的成员函数参数()的调用

我找不到我做错了什么。我非常感谢你的帮助。 而且,我之前也进行过验证,验证有效:

    $this->validate($request, [
        'name' => 'required|unique:developers|max:100'
    ]);
但这一个的问题是,当验证失败时,我不知道如何捕捉。以这种方式使用时是否可能捕获验证失败


使用版本:“laravel/lumen framework”:“5.2.*”

A
FatalThroTableError
异常是通常由symfony调试
错误处理程序引发的低级异常。在lumen中,队列工作者、PhpEngine、控制台内核和路由管道也使用它

确保以下各项

  • 您已将
    .env.example
    复制到
    .env
  • 如果您使用的是Facades,请确保通过取消对该行的注释,在
    bootstrap/app.php
    中启用了Facades
  • $app->withFacades()

    在内腔5.2.8中,以下任一项均有效

    下面将实际返回一个包含错误的有效JSON对象。您没有详细说明用例为什么这还不够。像这样使用
    validate
    调用的好处是它实际上返回一个
    422
    http状态代码,这意味着一个未处理的实体

    $app->get('/',函数(Request$Request){
    $this->validate$请求[
    “名称”=>“必需”
    ]);
    });
    
    使用facade也可以,尽管它返回一个
    200
    状态代码

    $app->get('/',函数(Request$Request){
    $validator=validator::make($request->only(['name'])[
    “名称”=>“必需”
    ]);
    如果($validator->fails()){
    return['error'=>“出现了问题”];
    }
    });
    
    如果您仍然没有正确使用
    Validator::make
    ,您可以使用捕获默认验证异常。感觉有点不舒服

    $app->get('/',函数(Request$Request){
    试一试{
    $this->validate$请求[
    “名称”=>“必需”
    ]);
    }捕获(\illumb\Validation\ValidationException$e){
    //为您的用例做任何您需要做的事情
    return['error'=>'我们捕获了异常'];
    }
    });
    
    您使用的是什么版本的Lumen?“laravel/Lumen framework”:“5.2.*”我下面的答案是5.2。env文件和正面已经准备就绪,没有问题。然后,我用$validator->fails()尝试了第二个示例,它起了作用。我注意到的一点是,它与我的完全相同,但有一点不同,那就是只接受一个请求变量。因此,我在$request->all()上得到了错误。我真想知道为什么不能这样做?还有一个问题,在您的示例中,验证在路由中,我的控制器中有我的验证,这是一个问题吗?这很奇怪,$request->all()和$request->only(['name',names'])都将返回数组。但是,$request->all()使用array\u replace\u recursive并将输入与上载的文件相结合。那么将验证移动到控制器上就没有区别了,它将使用相同的请求对象。
        $this->validate($request, [
            'name' => 'required|unique:developers|max:100'
        ]);