Slim Application Error: Respect\Validation\Validator
Slim Application Error: Respect\Validation\Validator
我在尝试验证我的 OrderForm.php 时遇到此错误。如果有人关注 Codecourse Shopping Cart Tutorial,您可能知道我为什么会收到此错误。这是我的一些文件中的代码,我认为这些代码与此错误最相关,当然还有错误。
错误:
Message: Class 'Respect\Validation\Validator' not found
File: PATH/cart/app/Validation/Forms/OrderForm.php
on 13
我还将 post 我的目录文件夹的这张图片:
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(' '),
];
}
}
Validator.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;
然后我得到了一个全新的错误,所以它起作用了。
好吧,它告诉你错误在哪里:
Message: Class 'Respect\Validation\Validator' not found
class 的路径无效,或者该文件不在该路径上。我不完全确定,但如果你像你那样写 use Respect\Validation\Validator as v;
最终路径将是当前命名空间加上该路径 Cart\Validation\Forms\Respect\Validation\Validator
.
File: PATH/cart/app/Validation/Forms/OrderForm.php on 13
第二部分只是在第 13 行触发了错误 'email' => v::email(),
。
编辑:
我刚看到那张图,路径应该是use \App\Validation\Validator
在我看来,您可能缺少 respect/validation 等依赖文件,因为在视频教程中安装了一些元素,我建议观看视频(s) 关于任何验证例程,作为代码课程“使用 Slim 3 进行身份验证:” , 在教程中安装额外的 addons/components 和包管理器,例如 composer,这可能被遗漏了。
我在尝试验证我的 OrderForm.php 时遇到此错误。如果有人关注 Codecourse Shopping Cart Tutorial,您可能知道我为什么会收到此错误。这是我的一些文件中的代码,我认为这些代码与此错误最相关,当然还有错误。
错误:
Message: Class 'Respect\Validation\Validator' not found
File: PATH/cart/app/Validation/Forms/OrderForm.php on 13
我还将 post 我的目录文件夹的这张图片: 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(' '),
];
}
}
Validator.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;
然后我得到了一个全新的错误,所以它起作用了。
好吧,它告诉你错误在哪里:
Message: Class 'Respect\Validation\Validator' not found
class 的路径无效,或者该文件不在该路径上。我不完全确定,但如果你像你那样写 use Respect\Validation\Validator as v;
最终路径将是当前命名空间加上该路径 Cart\Validation\Forms\Respect\Validation\Validator
.
File: PATH/cart/app/Validation/Forms/OrderForm.php on 13
第二部分只是在第 13 行触发了错误 'email' => v::email(),
。
编辑:
我刚看到那张图,路径应该是use \App\Validation\Validator
在我看来,您可能缺少 respect/validation 等依赖文件,因为在视频教程中安装了一些元素,我建议观看视频(s) 关于任何验证例程,作为代码课程“使用 Slim 3 进行身份验证:” , 在教程中安装额外的 addons/components 和包管理器,例如 composer,这可能被遗漏了。