Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Kohana]Problem z kilkupoziomowym menu
henio
post
Post #1





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 15.10.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Witam, od niedawna używam Kohany i mam taki problem. Stworzylem 3 tabele w bazie danych (menu-adm-1, menu-adm-2 i menu-adm-3) chce pobrać dane z pierwszej tabeli i wyświetlić potrafię. Chciałbym jednak osiągnąć taki cel: po pobraniu danych z tabeli menu-adm-1 i ich wyświetleniu zostały pobrane dane z tabeli menu-adm-2 ale tylko dla konkretnego pobranego wcześniej rekordu z tabeli menu-adm-1.

Model Admin_Menu
  1. <?php defined('SYSPATH') or die('No direct script access.');
  2.  class Admin_Menu_Model extends Model {
  3.    public function __construct()
  4.    {
  5.    parent::__construct();
  6.    }
  7.    
  8.    public function menu_adm1()
  9.    {
  10.    return $this->db->select('id', 'tekst', 'url', 'kolejny_poziom')
  11.            ->from('menu-adm-1')
  12.            ->orderby(array('kolejnosc' => 'ASC'))
  13.            ->get();
  14.    }
  15.  }
  16. ?>


Widok (fragment)
  1. <ul id="nav">
  2.        <?php foreach($menu as $m): ?>
  3.            <li><a href="<?php echo url::base().$m->url;?>"><?php echo $m->tekst;?></a></li>
  4.        <?php endforeach; ?>
  5.        </ul>


Kontroler
  1. <?php defined('SYSPATH') OR die('No direct access allowed.');
  2. class Glowna_Controller extends Controller {
  3.  
  4.        public function index()
  5.        {
  6.        $view = new View('layout/adm');
  7.        $menu = new Admin_Menu_Model;
  8.        $view->menu = $menu->menu_adm1();
  9.        $view->content = new View('adm/glowna');
  10.        $view->render(true);
  11.        }
  12. }
  13. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
henio
post
Post #2





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 15.10.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Wróciłem niedawno z wakacyjnego wyjazdu i wypoczęty powróciłem do tego problemu. Przeczytałem link, który został tu podrzucony, ale jakoś nie znalazłem w nim tego czego szukam.
Rozszerzyłem model o dwie dodatkowe funkcje i chciałbym coś z nimi zrobić w kontrolerze, żeby pobierane były odpowiednie rekordy.
model
  1. <?php defined('SYSPATH') or die('No direct script access.');
  2.  class Admin_Menu_Model extends Model {
  3.    public function __construct()
  4.    {
  5.    parent::__construct();
  6.    }
  7.    
  8.    public function menu_adm1()
  9.    {
  10.    return $this->db->select('id', 'tekst', 'url', 'kolejny_poziom')
  11.            ->from('menu-adm-1')
  12.            ->orderby(array('kolejnosc' => 'ASC'))
  13.            ->get();
  14.    }
  15.  
  16.    public function menu_adm2($id_menu_1)
  17.    {
  18.    return $this->db->select('id', 'tekst', 'url', 'kolejny_poziom')
  19.            ->from('menu-adm-2')
  20.            ->where(array('id_menu_1' => $id_menu_1))
  21.            ->orderby(array('kolejnosc' => 'ASC'))
  22.            ->get();
  23.    }
  24.  
  25.    public function menu_adm3($id_menu_2)
  26.    {
  27.    return $this->db->select('id', 'tekst', 'url')
  28.            ->from('menu-adm-3')
  29.            ->where(array('id_menu_2' => $id_menu_2))
  30.            ->orderby(array('kolejnosc' => 'ASC'))
  31.            ->get();
  32.    }
  33.  }
  34. ?>

widok - fragment
  1. <ul id="nav">
  2.        <?php foreach($menu1 as $m1): ?>
  3.            <li>
  4.                <a href="<?php echo url::base().$m1->url;?>"><?php echo $m1->tekst;?></a>
  5.                <?php if($m1->kolejny_poziom == "TAK") : ?>
  6.                <ul>
  7.                <?php foreach($menu2 as $m2): ?>
  8.                    <li>
  9.                        <a href="<?php echo url::base().$m2->url;?>"><?php echo $m2->tekst;?></a>
  10.                        <?php if($m2->kolejny_poziom == "TAK") : ?>
  11.                        <ul>
  12.                        <?php foreach($menu3 as $m3): ?>
  13.                            <li>
  14.                                <a href="<?php echo url::base().$m3->url;?>"><?php echo $m3->tekst;?></a>
  15.                            </li>
  16.                        <?php endforeach; ?>
  17.                        </ul>
  18.                        <?php endif; ?>
  19.                    </li>
  20.                <?php endforeach; ?>
  21.                </ul>
  22.                <?php endif; ?>
  23.            </li>
  24.        <?php endforeach; ?>
  25.        </ul>

kontroler
  1. <?php defined('SYSPATH') OR die('No direct access allowed.');
  2. class Glowna_Controller extends Controller {
  3.  
  4.    public function index()
  5.    {
  6.    $view = new View('layout/adm');
  7.    
  8.    $view->author = Kohana::config('settings.author');
  9.    $view->charset = Kohana::config('settings.charset');
  10.    $view->copyright = Kohana::config('settings.copyright');
  11.    
  12.     $menu = new Admin_Menu_Model;
  13.    $view->menu1 = $menu->menu_adm1();
  14.    $view->menu2 = $menu->menu_adm2('2');
  15.    $view->menu3 = $menu->menu_adm3('2');
  16.    
  17.    $view->content = new View('adm/glowna');
  18.    $view->render(true);
  19.    }
  20. }
  21. ?>

Mógłby ktoś mi pomóc rozwiązać ten dla wielu z was banalny problem
Go to the top of the page
+Quote Post

Posty w temacie
- henio   [Kohana]Problem z kilkupoziomowym menu   15.06.2009, 19:24:53
- - Cypherq   Przejedź foreach po rekordach z menu1 wyjmując rek...   15.06.2009, 22:49:36
- - henio   Ale to mam umieścić w kontrolerze?   16.06.2009, 09:30:06
- - skowron-line   W modelu zrób sobie zapytanie o główne menu i w pę...   16.06.2009, 09:34:02
|- - henio   Cytat(skowron-line @ 16.06.2009, 10...   16.06.2009, 10:01:23
|- - Cypherq   Cytat(skowron-line @ 15.06.2009, 23...   16.06.2009, 14:45:06
- - skowron-line   W modelu tworzysz metodę powiedzmy getMenu i ...   16.06.2009, 10:06:19
- - henio   Z Kohany korzystam dopiero od kilku dni i nie potr...   17.06.2009, 15:15:14
|- - skowron-line   Cytat(henio @ 17.06.2009, 14:15:14 ) ...   17.06.2009, 18:04:35
- - Cypherq   Nie obraź się, ale Skowron podał Ci wszystko na ta...   17.06.2009, 17:06:45
- - henio   Wróciłem niedawno z wakacyjnego wyjazdu i wypoczęt...   30.06.2009, 11:38:50
- - skowron-line   Według mnie tablica 2 wymiarowa była by najlepszym...   30.06.2009, 11:44:47
|- - henio   Cytat(skowron-line @ 30.06.2009, 12...   30.06.2009, 11:54:51
- - skowron-line   Nie wiesz jak wygląda tablica wielowymiarowa htt...   30.06.2009, 11:57:45
|- - henio   Cytat(skowron-line @ 30.06.2009, 12...   30.06.2009, 11:58:58
- - skowron-line   No ale powiedz w czym ty masz problem ze zrobieni...   30.06.2009, 12:11:44
|- - henio   Cytat(skowron-line @ 30.06.2009, 13...   30.06.2009, 12:39:31
- - phpion   Pokaż jak próbowałeś, a my Cię naprowadzimy pokazu...   30.06.2009, 12:56:04
|- - henio   Cytat(phpion @ 30.06.2009, 13:56:04 )...   30.06.2009, 13:40:32
- - skowron-line   a gdzie wrzucasz to do tablicy   30.06.2009, 14:31:43
|- - henio   Cytat(skowron-line @ 30.06.2009, 15...   1.07.2009, 08:07:35
|- - skowron-line   Cytat(henio @ 1.07.2009, 07:07:35 ) J...   1.07.2009, 08:10:03
- - phpion   Dobrze to pojęcie względne ale powinno działać.   1.07.2009, 08:10:06
- - henio   zrobiłem na mniej więcej na podstawie tego co tu z...   1.07.2009, 08:16:24
- - skowron-line   Dlaczego mam wrażenie że z każdą pierdołą piszesz ...   1.07.2009, 08:37:10
- - henio   Może aż tak źle ze mną nie jest. Stworzyłem taką ...   3.07.2009, 16:33:13


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 29.12.2025 - 19:02