【问题标题】:Slim Application Error: Respect\Validation\ValidatorSlim 应用程序错误:Respect\Validation\Validator
【发布时间】:2018-08-14 05:40:57
【问题描述】:

我在尝试验证我的 OrderForm.php 时收到此错误。如果有人关注Codecourse Shopping Cart Tutorial,您可能知道我收到此错误的原因。这是我认为与此错误最相关的一些文件中的代码,当然还有错误。

错误:

消息:未找到“Respect\Validation\Validator”类
文件:PATH/cart/app/Validation/Forms/OrderForm.php 13日


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


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);
    }
}

ValidatorInterface.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;

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

【问题讨论】:

    标签: php validation respect-validation


    【解决方案1】:

    在我看来,您可能缺少一个依赖文件,例如 尊重/验证,因为在视频教程中安装了一些元素,我建议您观看视频关注 任何 validation 例程,如代码课程“Authentication with Slim 3:”,使用包管理器(例如 composer,在教程中可能已经错过了。

    【讨论】:

      【解决方案2】:

      它会告诉你错误在哪里:

      消息:找不到类“Respect\Validation\Validator”

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

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

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

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

      【讨论】:

      • 这是我之前尝试做的事情,但又出现了一个错误,所以撤消了。如果你想帮助我@Siniša 解决这个新错误,我会非常高兴。
      • 调用未定义的方法 Cart\Validation\Validator::email()
      • 这意味着该类中没有名为email() 的静态方法。您会看到Validator::email() 是对名为Validator 的类中的静态方法public static function email() 的调用。 Laravel 报告说那里不存在这样的方法......或者它不是静态的......你需要看看那个类......
      • 哦,好吧,但问题是这是完整下载的文件/文件夹。如第一部分所述,我是从代码课程中获得的。所以我不知道Validator.php文件中的方法应该是什么。有什么建议吗?
      • 你打开Validator.php看里面有没有email()方法?还要检查一下 Tut,也许你跳过了一步或写错了什么......
      猜你喜欢
      • 2017-07-04
      • 1970-01-01
      • 2016-11-28
      • 2012-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多