Home » Php » php – Error: An uncaught Exception was encountered

php – Error: An uncaught Exception was encountered

Posted by: admin February 25, 2020 Leave a comment

Questions:

I receive this error:

An uncaught Exception was encountered Type: ArgumentCountError

Message: Too few arguments to function
Home::cadastroOrcamentoCliente(), 0 passed in
C:\xampp\htdocs\sistema_financas_old\system\core\CodeIgniter.php on
line 532 and exactly 6 expected

Filename:
C:\xampp\htdocs\sistema_financas_old\application\controllers\Home.php

Line Number: 1116

Backtrace:

File: C:\xampp\htdocs\sistema_financas_old\index.php Line: 315
Function: require_once

This is my code:

//Inicio de desenvolvimento new window client.
    //New Página para gerar pedido de cliente.
    function cadastroOrcamentoCliente($cpfcnpj=null, $tipo_pessoa=null, $dados = null, $id_pf, $id_cliente, $id_cadastro) {
        $tipo_login = $this->session->userdata('tipo_login');
        if ($tipo_login == '1' || $tipo_login == '4' || $tipo_login == '5') {
            $dadosPessoa['tipo_pessoa'] = null;
            $dadosOrcamento['str'] = $this->load->view('admin/compras/popup_cadastro', $dadosPessoa, true);
            if ($tipo_pessoa == 1) {
                $dadosOrcamento['cpf'] = $cpfcnpj;
                $dadosOrcamento['cnpj'] = null; 
            } else if ($tipo_pessoa == 2) {
                $dadosOrcamento['cpf'] = null;
                $dadosOrcamento['cnpj'] = $cpfcnpj;
            } else {
                $dadosOrcamento['cpf'] = $cpfcnpj;
                $dadosOrcamento['cnpj'] = $cpfcnpj; 
            }

            if ($this->alteracao->editEndereco($id_cadastro) && $this->alteracao->editPessoaFisica($id_pf) &&
                $this->alteracao->editCliente($id_cliente) && $this->alteracao->editCadastroComum($id_cadastro) && $this->alteracao->editarDadosBancarios($id_cadastro)) {
            $data_cad = date("d/m/Y");
            $hora_cad = date("H:i:s");
            $this->alteracao->cadastroHistorico('Dados do cliente editados', $id_cadastro, $data_cad, $hora_cad);
            $this->alteracao->mensagemAlerta("Dados alterados com sucesso!", 1, "home/cadastros", $id_cadastro);

            $dadosOrcamento['orcamento'] = $this->compras_m->buscarOrcamentoAtual($this->session->userdata('id_orcamento'));
            $this->load->view('admin/head');
            $dadosBarra['dadosB'] = $this->financeiro->listaContas();
            $this->load->view('admin/barraSuperior', $dadosBarra);
            $dadosLogo['logo'] = $this->adm->retornaLogo();
            $this->load->view('admin/menu', $dadosLogo);
            $this->load->view('admin/vendas/cadastro_orcamento_cliente', $dadosOrcamento);
            $this->load->view('admin/footer');
        } else {
            $dados['mensagem'] = null;
            $this->paginas($dados);
        }
    }
    }

im calling here

 <form method="post" action="<?php echo site_url('pedido/cadastroOrcamentoVendaCliente') ?>">

just create a new screen and need additional to the project

How to&Answers:

This:

function cadastroOrcamentoCliente($cpfcnpj=null, $tipo_pessoa=null, $dados = null, $id_pf,
                                  $id_cliente, $id_cadastro)

is fundamentally wrong to begin with.

https://www.php.net/manual/en/functions.arguments.php#functions.arguments.default:

Note that when using default arguments, any defaults should be on the right side of any non-default arguments; otherwise, things will not work as expected.

You need to change the order of your arguments here – the ones without default values need to come first, and the ones with only after that:

function cadastroOrcamentoCliente($id_pf, $id_cliente, $id_cadastro, $cpfcnpj=null,
                                  $tipo_pessoa=null, $dados = null)

And then you will still have to provide values for at least the first three of them in your actual call of that function.

Answer:

If you are posting fields to the cadastroOrcamentoCliente you shouldn’t define a parameter count. POST fields are not treated as function parameters, which is why you’re getting the error (you’re declaring that the function must receive 6 parameters exactly, but it’s getting none)

just declare the function as function cadastroOrcamentoCliente() and then handle the post’ed fields via $this->input->post('fieldname') (after validating everything with the form validation helper)