Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Felipe Torres

PHP e CODEIGNITER - Controller

Recommended Posts

Boa noite galera,

Estou com uma dificuldade para puxar mais de 1 model dentro do mesmo controller.

 

Eu tenho a class Profissionais, dentro da function INDEX eu quero puxar SOCIOS (que está dando certo, os dados estão indo para a view PROFISSIONAIS) e também quero carregar ADVOGADOS e ADMINISTRADOR. Só que não estou conseguindo.

 

Controller (teste1):

<?php


class Profissionais extends CI_Controller {

	public function __construct()
	{
		parent::__construct();
	}

	public function index(){

		$this->load->model('Socios_model');
		$dados['socio'] = $this->Socios_model->get_socios();


		$this->load->view('profissionais',$dados);

}

public function advogados(){

	$this->load->model('Socios_model');
	$dados['socio'] = $this->Socios_model->get_socios();


	$this->load->view('profissionais',$dados);

}

}
/**
 *
 */
class Advogados extends Profissionais
{

	function __construct()
	{
	parent::__construct();
	}
	public function index(){

		$this->load->model('Advogados_model');
		$dados['advogados'] = $this->Advogados_model->get_advogados();
		var_dump($dados['advogados']);

		$this->load->view('profissionais',$dados);

}

}

Controller (teste2):

class Profissionais extends CI_Controller {

	public function __construct()
	{
		parent::__construct();
	}

	public function index(){

		$this->load->model('Socios_model');
		$dados['socio'] = $this->Socios_model->get_socios();

		$this->load->model('Advogados_model');
		$adv['advogados'] = $this->Advogados_model->get_advogados();

		$this->load->view('profissionais',$dados,$adv);

}


}

O erro diz que a variável não foi definida:


A PHP Error was encountered

Severity: Notice

Message: Undefined variable: advogados

Filename: views/profissionais.php

Line Number: 169

Backtrace:

File: C:\wamp\www\novo\application\views\profissionais.php
Line: 169
Function: _error_handler

File: C:\wamp\www\novo\application\controllers\Profissionais.php
Line: 19
Function: view

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

Severity: Warning

Message: Invalid argument supplied for foreach()

Filename: views/profissionais.php

Line Number: 169

Backtrace:

File: C:\wamp\www\novo\application\views\profissionais.php
Line: 169
Function: _error_handler

File: C:\wamp\www\novo\application\controllers\Profissionais.php
Line: 19
Function: view

File: C:\wamp\www\novo\index.php
Line: 315
Function: require_once

Compartilhar este post


Link para o post
Compartilhar em outros sites

A função load_view aceita somente três parâmetros, o primeiro é o nome da view, o segundo os dados enviados para view e o terceiro é um booleano.

 

Logo, sua passagem de dados está incorreta, deve ser assim:

$this->load->model('Socios_model');
$dados['socio'] = $this->Socios_model->get_socios();

$this->load->model('Advogados_model');
$dados['advogados'] = $this->Advogados_model->get_advogados();

$this->load->view('profissionais',$dados);
Ps.: Isso tudo está no manual (https://ellislab.com/codeigniter/user-guide/general/views.html);

 

Ps. 2: A Ellis Labs não é mais mantenedor do Code Igniter (deves procurar o novo mantenedor, caso houver);

 

Ps. 3: CI não é um bom FrameWork, em trabalhos futuros, é aconselhável mudar para outro.

Compartilhar este post


Link para o post
Compartilhar em outros sites
class Profissionais extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
    }

    public function index(){

        $this->load->model(array('Socios_model', 'Advogados_model'));
        $dados['socio'] = $this->Socios_model->get_socios();
        $dados['advogados'] =  $this->Advogados_model->get_advogados();

        $this->load->view('profissionais',$dados);

}


}

Quando estiver na view profissionais acesse os dados com as respectivas variaveis: $socio, $advogados;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.