RkBlog

Hardware, programming and astronomy tutorials and reviews.

Generowanie ścieżek w CI

Przyjazne linki w postaci http://localhost/html/ci/index.php/test/ mają jedną wadę. Element index.php/test/ traktowany jest jak katalogi! Tak więc jeżeli w widoku umieścimy:
<link rel="stylesheet" type="text/css" href="ścieżka/do/style.css" />
To będzie to ścieżka poprawna dla głównej strony (http://localhost/html/ci/) dla np. index.php/test/ będzie to "ścieżka" w postaci: index.php/test/ścieżka/do/style.css i nie będzie oczywiście poprawna.

Problem ?

Jak generować poprawne ścieżki i linki między stronami by zawsze działały ?

Rozwiązanie

Ci oferuje proste rozwiązanie - Helper o nazwie url. Najlepszym rozwiązaniem będzie jego automatyczne ładowanie. W application/config/autoload.php znajdź $autoload['helper'] i dodaj "pomocnika:
$autoload['helper'] = array('url');
Po jego załadowaniu mamy dostęp do funkcji, m.in.:
- site_url(): generuje link do strony głównej
- site_url('kontroler/..'): generuje link do podanego elementu strony (parametrem jest łańcuch - url zaczynający się od kontrolera)
- base_url(): generuje bazowy url HTTP do głównego katalogu CI

W widoku wystarczy zastosować:
<link rel="stylesheet" type="text/css" href="<?PHP echo base_url(); ?>system/application/views/metrohacker/style.css" />
I ścieżka zawsze będzie poprawna

Przykładowy link do określonej strony:
<a href="<?PHP echo site_url('admin/art_add'); ?>">Dodaj Artykuł</a>
RkBlog

Kurs Code Igniter, 14 July 2008, Piotr Maliński

Comment article