Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CodeIgniter] Powielani Funkcji
Forum PHP.pl > Forum > PHP > Frameworki
Siner
Na każdej podstronie serwisu korzystam z jednej funkcji do pobierania ostatnich wiadomości, ale nie znalazłem sposobu aby to zautomatyzować i w każdym kontrolerze ładuje model, a później przy każdej funkcji przed wysłaniem całego widoku w serwisie pisze dodatkowo:
  1. <?php
  2. $query = $this->News->getLastNews(3);
  3. if($query->num_rows() > 0)
  4. {
  5. $data['lastNews'] = $query->result();
  6. }
  7. ?>


Czy jest jakiś sposób w CI, aby wywoływało się to automatycznie?
ehhh
Jeśli chcesz mieć dostęp do jednej i tej samej funkcji we wszystkich kontrolerach to możesz ją stworzyć jako dodatkową bibliotekę (system/application/libraries). Wtedy funkcja będzie zapisana tyko raz, a w kontrolerach 2 linijki (załadowanie i wykonanie). Dodatkowo, możesz ją dodać do bibliotek ładowanych automatycznie... Przykład:

system/application/config/autoload.php
  1. <?php
  2. // ...
  3. $autoload['libraries'] = array('test');
  4. // ...
  5. ?>


system/application/libraries/test.php
  1. <?php
  2.  
  3. class Test
  4. {
  5.  
  6. var $test;
  7.  
  8. function __construct()
  9. {
  10. $this->test = 'TEST';
  11. }
  12.  
  13. }
  14.  
  15. ?>

system/application/controllers/welcome.php
  1. <?php
  2.  
  3. class Welcome extends Controller
  4. {
  5.  
  6. function __construct()
  7. {
  8. parent::__construct();
  9. echo $this->test->test;
  10. }
  11.  
  12. function index()
  13. {
  14. // ...
  15. }
  16. }
  17.  
  18. ?>


PS. W bibliotekach, przy np. ładowaniu modeli, nie działa $this->load..., zamiast tego musisz zrobić $CI =& get_instance(); a później ładować co chcesz poprzez $CI->load... itp.
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.