Ładuję wiele widoków z kontrolera, aby wyświetlić stronę.
$this->load->view('header');
$this->load->view('content', $data);
$this->load->view('sidebar1', $data1);
$this->load->view('sidebar2', $data2);
$this->load->view('footer');
Myślę jednak, że nie jest to czyste podejście. Czy można to ulepszyć, tworząc pojedynczy widok główny, na przykład „widoki/stronę”, który zawiera w sobie wszystkie powyższe widoki. Wtedy zamiast wywoływać wszystkie powyższe widoki, mogę wywołać tylko widok główny, na przykład:
$this->load->view('main');
W takim przypadku jak mogę przekazać zmienne dla treści, sidebar1 i sidebar2? Dziękuję
3 odpowiedzi
W ramach swoich projektów mam tendencję do wykonywania:
$this->load->vars($data);
$this->load->view('template_name');
Gdzie mój szablon ładuje się w innych widokach w sobie.
Dokumentacja CodeIgnitera stwierdza, co następuje dla metody $this->load->vars():
"Ta funkcja pobiera tablicę asocjacyjną jako dane wejściowe i generuje zmienne za pomocą funkcji ekstraktu PHP. Ta funkcja daje taki sam wynik, jak użycie drugiego parametru funkcji $this->load->view() powyżej. Powód, dla którego możesz chcieć użyj tej funkcji niezależnie, jeśli chcesz ustawić niektóre zmienne globalne w konstruktorze kontrolera i udostępnić je w dowolnym pliku widoku załadowanym z dowolnej funkcji.Możesz mieć wiele wywołań tej funkcji.Dane są buforowane i łączone w jedna tablica do konwersji na zmienne.”
Użycie $this->load->vars($data) pomaga uniknąć konieczności ładowania danych dla każdego widoku w moim szablonie.
Przekaż dane dla każdego widoku jako tablicę do głównego widoku, a następnie przekaż te tablice, gdy główny widok ładuje podwidoki.
$data['sidebar1_data'] = array($one => 'one');
$data['sidebar2_data'] = array($two => 'two');
Następnie w głównym widoku:
$this->load->view('sidebar1', $sidebar1_data);
$this->load->view('sidebar2', $sidebar2_data);
Użyj jak to
$newData = array_merge($data, $data1, $data2);
$this->load->view('main', $newData);
Jeśli w $data, $data1, $data2 nie ma klucza o tej samej nazwie, będzie on działał bez modyfikowania żadnego widoku zmiany nazwy zmiennej.
Podobne pytania
Nowe pytania
codeigniter
CodeIgniter to Application Development Framework - zestaw narzędzi - dla osób, które tworzą strony internetowe przy użyciu PHP. Stworzony przez EllisLab, wspierany przez BCIT, jest teraz projektem Fundacji CodeIgniter. Struktura implementuje zmodyfikowaną wersję wzorca projektowego Model-View-Controller. Użyj tego tagu w przypadku pytań dotyczących klas, metod, funkcji, składni i użycia CodeIgniter. Istnieją dwie główne wersje: 3.x i 4.x, obsługujące różne wymagania systemowe