Ошибка: возникла неперехваченная исключительная ситуация - PullRequest
0 голосов
/ 14 февраля 2020

Я получаю эту ошибку:

Обнаружена необработанная исключительная ситуация Тип: ArgumentCountError

Сообщение: слишком мало аргументов для функции Home :: cadastroOrcamentoCliente (), 0 передано в C: \ xampp \ htdocs \ sistema_financas_old \ system \ core \ CodeIgniter. php в строке 532 и ожидается ровно 6

Имя файла: C: \ xampp \ htdocs \ sistema_financas_old \ application \ controllers \ Home. php

Номер строки: 1116

Backtrace:

Файл: C: \ xampp \ htdocs \ sistema_financas_old \ index. php Строка: 315 Функция: require_once

Это мой код:

//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);
        }
    }
    }

я звоню сюда

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

просто создайте новый экран и нуждайтесь в дополнительном проекте

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

Это:

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

в корне неверно.

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

Обратите внимание, что при использовании аргументов по умолчанию любые значения по умолчанию должны быть справа от любых аргументов не по умолчанию; в противном случае, все будет работать не так, как ожидалось.

Вам необходимо изменить порядок своих аргументов здесь - те, у которых нет значений по умолчанию, должны стоять первыми, а те, у которых только после этого:

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

И тогда вам все равно придется предоставить значения по крайней мере для первых трех из них при фактическом вызове этой функции.

0 голосов
/ 14 февраля 2020

Если вы публикуете поля в cadastroOrcamentoCliente, вы не должны определять количество параметров. POST поля не рассматриваются как параметры функции, поэтому вы получаете сообщение об ошибке (вы заявляете, что функция должна получить ровно 6 параметров, но не получает ни одного)

просто объявите функцию как function cadastroOrcamentoCliente(), а затем обрабатывать поля после публикации с помощью $this->input->post('fieldname') (после проверки всего с помощью помощника проверки формы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...