Я создал валидатор, и я пытаюсь сделать это проверить, если поле является уникальным, я думаю, что у меня есть правила в порядке, но он бросает фатальную ошибку:CakePHP 3 Проверки validateUnique ошибка
Fatal error: Using $this when not in object context in route/app/vendor/cakephp/cakephp/src/ORM/Table.php on line 2113
Также строгие стандарты сказать мне это:
Non-static method Cake\ORM\Table::validateUnique() should not be called statically [CORE/src/Validation/ValidationRule.php, line 140]
Является ли это ошибка в торт 3? Я использую только основные методы ...
Мой торт версия 3.0.1
Код валидатор:
<?php namespace App\Model\Validation;
use Cake\Validation\Validator;
class SiteValidator extends Validator
{
public function __construct()
{
parent::__construct();
$this->provider('table', 'Cake\ORM\Table');
$this
->add('id', 'valid', ['rule' => 'numeric'])
->allowEmpty('id', 'create')
->requirePresence('subdomain', 'create')
->notEmpty('subdomain')
->add('subdomain', 'validFormat', [
'rule' => 'alphanumeric',
'message' => 'El subdominio solo puede contener números y letras sin tildes.',
])
->add('subdomain', [
'unique' => ['rule' => 'validateUnique', 'provider' => 'table']
])
->requirePresence('name', 'create')
->notEmpty('name')
->add('profile_count', 'valid', ['rule' => 'numeric'])
->requirePresence('profile_count', 'create')
->notEmpty('profile_count');
}
}
Вызов:
use App\Model\Validation\SiteValidator;
....
$validator = new SiteValidator();
$validator->errors($this->request->data)
работы ed charms, мне нравится первый вариант лучше, потому что мне нужно проверить правильность хранения данных в сеансе, а не сохранять его (пока). это нормально, если я передаю SiteTable в конструктор валидатора? – SkarXa
@SkarXa Зависит от вашего определения «_OK_», но с технической точки зрения все будет в порядке. – ndm
Знаете, стандарты торта, условности, чистота, независимость от кода ... – SkarXa