Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Undefined property

Estou tentando fazer um cadastro, porém, não sei onde estou errando. Preencho os 4 campos do formulário e, quando clico no botão "Finalizar", dá as mensagens a seguir. Depois dos erros obtidos, estão os fontes de view, controller e model.

A PHP Error was encountered

Severity: Notice

Message: Undefined property: Manutencao::$Manutencao_Model

Filename: controllers/Manutencao.php

Line Number: 49

Backtrace:


File: C:\wamp\www\loja\application\controllers\Manutencao.php
Line: 49
Function: _error_handler

File: C:\wamp\www\loja\index.php
Line: 315
Function: require_once
A PHP Error was encountered

Severity: Error

Message: Call to a member function insert() on null

Filename: controllers/Manutencao.php

Line Number: 49

Backtrace:

Minha view

<div class="row">            
            <div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
                <form class="" id="form" name="form" method="POST" action="<?= base_url();?>manutencao/add">
                    <div class="form-group col-md-12 col-lg-12">
                        <label>Veículo</label>
                        <select id="idVeiculo" class="veiculos" name="idVeiculo" style="width: 100%;">  -->
                            <option selected>Selecione o veículo</option> -->
                            <?php foreach ($veiculos as $veiculo) { 
                            ?>
                            <option value="<?php echo $veiculo->idVeiculo; ?>" ><?php echo $veiculo->modelo; ?></option>
                            <?php
                            }
                            ?>
                        </select>
                    </div>
                    <div class="form-group col-md-12 col-lg-12">
                        <label>Serviço</label>
                        <select id="idServico" class="servicos" name="idServico" style="width: 100%;">
                            <option selected>Selecione o serviço</option>
                            <?php foreach ($servicos as $servico) { 
                            ?>
                                <option value="<?php echo $servico->idServico; ?>"><?php echo $servico->descricao; ?></option>
                            <?php
                            }
                            ?>
                        </select>
                    </div>
                    <div class="form-group col-md-3 col-lg-3">
                        <label>Valor Unitário</label>
                        <input id="unitario" type="text" class="form-control" name="unitario">
                    </div>
                    <div class="form-group col-md-3 col-lg-3">
                        <label>Quantidade</label>
                        <input id="quantidade" type="text" class="form-control" name="quantidade">
                    </div>
                    <div id="btn-add" class="form-group col-md-6 col-lg-6">
                        <button class="btn btn-success text-right" form="form" >Adicionar</button>
                    </div>
                </form>
                <div class="form-group col-md-12 col-lg-12">
                    <button id="finalizar" class="btn btn-primary" form="form" type="submit">Finalizar</button>
                </div>
            </div>
        </div>

Meu controller

class Manutencao extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('Veiculos_Model');
        $this->load->model('Servicos_Model');

    }

    public function index() {

        $dados['veiculos'] = $this->Veiculos_Model->buscaTodos();
        $dados['servicos'] = $this->Servicos_Model->buscaTodos();

        $this->load->view('layout/cabecalho');
        $this->load->view('manutencao/index', $dados);
        $this->load->view('layout/rodape');        
    }


    public function add() {

        $dados['veiculos'] = $this->Veiculos_Model->buscaTodos();
        $dados['servicos'] = $this->Servicos_Model->buscaTodos();

        $this->load->view('layout/cabecalho');
        $this->load->view('manutencao/index', $dados);
        $this->load->view('layout/rodape');

        $dados['idVeiculo'] = $this->input->post('idVeiculo');
        $dados['idServico'] = $this->input->post('idServico');
        $dados['quantidade'] = $this->input->post('quantidade');
        $dados['unitario'] = $this->input->post('unitario');
        $this->Manutencao_Model->insert($dados);    
    }



}

Minha model

class Manutencao_Model extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    public function insert($dados) {
        $this->idVeiculo = $dados['idVeiculo'];
        $this->idServico = $dados['idServico'];
        $this->quantidade = $dados['quantidade'];
        $this->unitario = $dados['unitario'];        
        $this->db->insert('veiculoservicos', $this);
    }
2 respostas
solução!

Não tenho certeza, mas pelo código que você mandou parece que você não instanciou a sua classe "Manutencao_Model" e quano você roda o seguinte comando ele não encontra a variável 'Manutencao_Model'

 $this->Manutencao_Model->insert($dados);

Talvez você devesse instanciar ela como fez com essas models aqui:

$this->load->model('Veiculos_Model');
$this->load->model('Servicos_Model');

Tente inserir essa linha:

$this->load->model('Manutencao_Model');

Cara, muito obrigado!