Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Undefined variable
Forum PHP.pl > Forum > Przedszkole
codeszan
Wyskakują mi błędy, iż nie mam zdefiniowanej zmiennej $generateMenu ale ona przecież jest?
Działam na zasadzie model-> controller->widok, tylko tym razem cos chyba jest nie tak?

View:
  1. <?php foreach ($generateMenu as $item) : ?>
  2. <?php echo $item['name']; ?>
  3. <?php endforeach; ?>

Controller:
  1. public function generateMenu(){
  2. $data['getModule'] = $this->model_panel->getModule();
  3. if (!$data['getModule']) {
  4. var_dump( $data['getModule']);
  5.  
  6. $this->view->load('/panel/templates/menu', $data);
  7.  
  8. }
  9.  
  10. }


Model:
  1. public function getModule()
  2. {
  3. $this->db->select('name');
  4. $this->db->from('modules');
  5. $query = $this->db->get();
  6.  
  7. if ($query->num_rows() > 0) {
  8. return $query->result_array();
  9. }
  10.  
  11. }


Dokładne błędy to:
1. Message: Undefined variable: generateMenu
2. Message: Invalid argument supplied for foreach()
Wskazuja na linie z:

  1. <?php foreach ($generateMenu as $item) : ?>
viking
Ja tam w kodzie widzę metodę a nie zmienną która nic nie zwraca tylko coś wczytuje.
Tomplus
Zacznij od samego komunikatu.
zmienna nie jest zdefiniowana tzn. że wcześniej w żaden sposób nie jest utworzona/wczytana czyli:

W skrócie masz coś takiego:
  1. function foo() {
  2. return $bar;
  3. }


Kod
Message: Undefined variable: bar


ale gdy dodam już coś:

  1. function foo($bar = null) {
  2. return $bar;
  3. }


to notki nie będzie.
Pyton_000
Obstawiam że zamiast `$generateMenu` powinno być `$getModule`
codeszan
Zarowno $generateMenu jak i $getModule w vidoku zwracaja null ..

Cytat
Ja tam w kodzie widzę metodę a nie zmienną która nic nie zwraca tylko coś wczytuje.


wartość metody stworzonej w modelu zwracam do controllera, nastepnie zapisuje w $data['getModule'] i chce wylistować w widoku

Nie moge przeslac nawet czegos takeigo:
  1. $data = 'jakis test';
  2. $this->load->view('/panel/templates/menu', $data);
viking
Bo pewnie $data coś zawiera. Co robi load? Mamy zgadywać?
codeszan
Pomoglo mi zdefiniowanie jeszcze raz data w konstuktorze aczkolwiek teraz dublowal mi sie szablon menu.

Czy da sie przekazywac dane do widoku ale go nie ladowac?

O ten element mi chodzi

  1. $this->load->view('/panel/templates/menu', $data,FALSE);
viking
Powtórzę jeszcze raz. A skąd my mamy wiedzieć z czego ty korzystasz i czym w tym wypadku jest widok, kontroler, co zawieraja?
codeszan
Zadam pytanie ponownie. Czy mogę załadować daną (obojętnie jaką ) z kontrolera do widoku. Tak by nie wczytać przy okazji widoku tak jak to się dzieje powyzej? Korzystam z CodeIgniter obecnie. Sama zawartosc juz nie jest istotna.
viking
Tak, możesz: https://www.codeigniter.com/user_guide/general/views.html Tylko dlaczego od razu nie napisałeś że chodzi o CI.
Przed $this->view->load sprawdź co zawiera $data.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.