Codeigniter przekazanie danych z modelu do kontrolera

0

Witam, zaczynam programować w Codeigniter i napotkałem mały problem. Otóż mam taki model:

class Danefirmymodel extends CI_Model {
    function __construct()
    {
        parent::__construct();
    }  
    function danefirmy()
    {
		$query = $this->db->get('dane_firmy');
		if ($query->num_rows() == 1)
		{
			foreach ($query->result() as $row)
				{
					$nazwa_firmy = $row->Nazwa_firmy;
					$nip = $row->NIP;
					$email = $row->E_mail;
					$telefon = $row->Telefon;
				}
			return true;		
		}
		else
		{
			return false;
		}
	}
}

i problem mam taki że w pliku kontrolera gdy chcę wyświetlić zmienne nazwa_firmy, nip, email, telefon niestety wyświetla się komunikat Message: Undefined variable: nazwa_firmy, czyli niezdefiniowana zmienna. Jak w Codeigniter przekazać zmienną z modelu do kontrolera?

cześć kontrolera:

$this->load->model('Danefirmymodel','',TRUE);
        if ($this->Danefirmymodel->danefirmy()==TRUE)
	{
		echo $nazwa_firmy;
		echo $nip;
		echo $email;
		echo $telefon;
        }
0

działa gdy zrobię tak:

Model:

class Danefirmymodel extends CI_Model {
    function __construct()
    {
        parent::__construct();
    }  
    function danefirmy()
    {
        $query = $this->db->get('dane_firmy');
        if ($query->num_rows() == 1)
        {
            foreach ($query->result() as $row)
                {
                    global $nazwa_firmy;
                    $nazwa_firmy = $row->Nazwa_firmy;
                    $nip = $row->NIP;
                    $email = $row->E_mail;
                    $telefon = $row->Telefon;
                }
            return true;        
        }
        else
        {
            return false;
        }
    }
}

część kontrolera:

$this->load->model('Danefirmymodel','',TRUE);
        if ($this->Danefirmymodel->danefirmy()==TRUE)
    {
        global $nazwa_firmy;
        echo $nazwa_firmy;
        echo $nip;
        echo $email;
        echo $telefon;
        }

ale czy to, że tak napiszę jest "etyczne" czy jest jakiś inny sposób w CI?

3

Niestety, aż tak fajnie to nie działa. Jeśli chcesz, aby mieć te informacje w kontrolerze to zamiast zwracać TRUE powinieneś zwrócić, te informacje, które Ci są potrzebne. Następnie w kontrolerze je odbierasz i robisz co tam chcesz.
Czyli w Twoim przypadku najlepiej jeśli w modelu dodasz sobie tablicę, do której będziesz zapisywał te zmienne, a później ją przekażesz do kontrolera.

0

Ja zrobiłbym osobny obiekt opakowujący pojedynczą firmę i w modelu zwracał listę takich obiektów, imho to najbardziej sensowne rozwiązanie.

0

Zrobiłem tak jak radził freemp3, dzięki działa ;)

0

Do CI polecam Od razu bibliotekę rozszerzającą Ci_Model o funkcje które można wykonać prosto z controllera. Więcej informacji i dokumentacja pod tum linkiem

https://github.com/jamierumbelow/codeigniter-base-model

1 użytkowników online, w tym zalogowanych: 0, gości: 1