2015-10-31 1 views
0

Вот мой валидатор для поля статьи, где PDF-файлы должны быть загружены:CakePHP 3 валидатор - Невозможно вызвать метод «» в «» поставщика по умолчанию для поля загрузки

$validator 
->add('article', [ 
    'rule' => [ 
     'extension' => [ 
      ['article', 'pdf'], 
      'message' => 'Only pdf!' 
     ] 
    ] 
]) 
->notEmpty('article'); 

Это дает ошибку:

"Unable to call method "" in "default" provider for field "article""

Как исправить это, чтобы включить загрузку только pdf файлов в полевую статью?

+0

Вместо '['article', 'pdf']' it должно быть '['pdf']' –

+0

Не нужно было удалять [оригинал вопрос] (http://stackoverflow.com/questions/33449666/cakephp-3-validator-unable-to-call-method-in-default-provider-for-upload) и создать дубликат. Я по-прежнему предлагаю сравнить ваш код с [** примерами в документах **] (http://book.cakephp.org/3.0/en/core-libraries/validation.html#creating-validators), разница должна быть довольно очевидной. – ndm

ответ

1

Неверный порядок элементов в коде.

Также стоит посмотреть: API Класс Validation - Extension

$validator 
    ->add('article', [ 
    'extension' => [ 
     'rule' => [ 'extension', ['pdf'] ], 
     'message' => 'Only PDF!' 
    ] 
    ]) 
    ->notEmpty('article', 'This field is required') 
    ; 

Вы должны также проверить mimeType для повышения безопасности. Аналогично, см. Также пример в книге в главе conditional validation

Смежные вопросы