0

尝试验证我的 OrderForm.php 时出现此错误。如果有人关注Codecourse 购物车教程,您可能知道我为什么会收到此错误。这是我认为与此错误最相关的一些文件中的代码,当然还有错误。

错误:

消息:找不到类 'Respect\Validation\Validator'
文件:PATH/cart/app/Validation/Forms/OrderForm.php on 13


我还将发布我的目录文件夹的这张图片: 目录文件夹图片


OrderForm.php

<?php

namespace Cart\Validation\Forms;


use Respect\Validation\Validator as v;

class OrderForm
{
    public static function rules()
    {
        return [
            'email' => v::email(),
            'name' => v::alpha(' '),
            'address1' => v::alnum(' -'),
            'address2' => v::optional(v::alnum(' -')),
            'city' => v::alnum(' '),
            'postal_code' => v::alnum(' '),
        ];
    }
}

验证器.php

<?php

namespace Cart\Validation;

use Cart\Validation\Contracts\ValidatorInterface;
use Psr\Http\Message\ServerRequestInterface as Request;
use Respect\Validation\Exceptions\NestedValidationException;

class Validator implements ValidatorInterface
{
    protected $errors = [];

    public function validate(Request $request, array $rules)
    {
        foreach ($rules as $field => $rule) {
            try {
                $rule->setName(ucfirst($field))->assert($request->getParam($field));
            } catch (NestedValidationException $e) {
                $this->errors[$field] = $e->getMessages();
            }
        }

        $_SESSION['errors'] = $this->errors;

        return $this;
    }

    public function fails()
    {
        return !empty($this->errors);
    }
}

验证器接口.php

<?php

namespace Cart\Validation\Contracts;

use Psr\Http\Message\ServerRequestInterface as Request;

interface ValidatorInterface
{
    public function validate(Request $request, array $rules);
    public function fails();

}

编辑:我只想说我改变了:
use Respect\Validation\Validator as v;

use Cart\Validation\Validator as v;

然后我得到一个全新的错误,所以它起作用了。

4

2 回答 2

2

在我看来,您可能缺少依赖文件,例如尊重/验证,因为在视频教程中安装了一些元素,我建议观看有关任何验证例程的视频,作为代码课程“使用 Slim 进行身份验证3: ",在教程期间使用可能已错过的包管理器(例如composer )安装附加插件/组件。

于 2018-08-13T21:40:57.993 回答
1

那么它会告诉你错误在哪里:

消息:找不到类 'Respect\Validation\Validator'

该类的路径无效,或者该文件不在该路径上。我不完全确定,但是如果您像以前那样编写它use Respect\Validation\Validator as v;,最终路径将是当前名称空间加上该路径Cart\Validation\Forms\Respect\Validation\Validator

文件:13 上的 PATH/cart/app/Validation/Forms/OrderForm.php

第二部分只是在第 13 行触发了错误'email' => v::email(),

编辑:我刚看到那张图片,路径应该是use \App\Validation\Validator

于 2017-05-19T20:20:02.337 回答