Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Validação não funciona

Fatal error: Declaration of App\Model\Table\ProdutosTable::validationDefault(Cake\Validation\Validator $validator) must be compatible with Cake\ORM\Table::validationDefault(Cake\Validation\Validator $validator): Cake\Validation\Validator in /home/eferro/workspace/estoque/src/Model/Table/ProdutosTable.php on line 6

ProdutosTable.php

<?php 
    namespace App\Model\Table;
    use Cake\ORM\Table;
    use Cake\Validation\Validator;

    class ProdutosTable extends Table {

        public function validationDefault(Validator $validator){

            $validator->requirePresence('nome', true)->notEmpty('nome');
            $validator->requirePresence('preco', true)->notEmpty('preco');
            $validator->add('descricao', [
                'mimLength' => [
                    'rule' => ['mimLength', 10 ],
                    'message' => 'A descrição deve conter pelo menos 10 caracteres'
                ] 
            ]);

            return $validator;
        }
    }
?>

ProdutosController.php

[...]
public function salva() {

        $produtosTable = TableRegistry::get('Produtos');

        $produto = $produtosTable->newEntity($this->request->getData());

        if (!$produto->errors() && $produtosTable->save($produto)) {
            $msg = "Produto salvo com sucesso";
            $this->Flash->set($msg, ['element' => 'success']);
        } else {
            $msg = "Erro ao salvar o produto";
            $this->Flash->set($msg, ['element' => 'error']);
        }

        $this->set('produto', $produto);
        $this->render('novo');
    }
[...]

1 resposta
solução!

Em CakePHP 4 a declaração da função deve ser como abaixo:

public function validationDefault(Validator $validator): Validator {

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software