Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [KOHANA] Kilka problemów początkującego
Forum PHP.pl > Forum > PHP > Frameworki
Posio
Szukałem, szukałem i jeszcze raz szukałem... no ale jak to często bywa albo jestem ślepy (co jest całkiem prawdopodobne) albo po prostu nie znalazłem dokładnie tych zagadnień o które mi chodzi.

Otóż tak. Mam serwer postaiony na XAMPP'ie 1.8

ścieżka do aplikacji wygląda tak :

Kod
http://localhost/aplikacja/


W bootstrap ścieżka jest ustawiona prawidłowo i wyłączony index.

.htaccess wygląda następująco:

Kod
# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /aplikacja/

# Protect hidden files from being viewed
<Files .*>
    Order Deny,Allow
    Deny From All
</Files>
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]

# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]


I teraz mam 2 problemy. Stworzyłem sobie kontroler i widok.

Na początku wszystkie pliki tj. style, obrazki skrypty wrzuciłem do domyślnego folderu z widokiem no i nie działało przez to że routing jest jaki jest.
Ale wrzuciłem wszystko do głownego katalogu i wpisując adres localhost/aplikacja/ wszystko wyświetlało sie elegancko ale gdy wpisze localhost/aplikacja/page/home znów linki nie pasują bo zwracają mi takie adresy : http://localhost/codestore/page/css/basic.css

I teraz pytanie czy jedyne rozwiązanie to podawanie adresów bezwzględnych? Znacznie utrudnia mi to pracę, teraz pracuje na localu ale przenosząć projekt na serwer ?

No i jeszcze 2gi problem być może łączący się z poprzednim. Po usunięciu index.php adres localhost/aplikacja/ działa ok ale już localhost/aplikacja/index.php wywala 404. Wiem że po prostu nie ma do niego routingu, ale z racji że nie ogarniam całkowicie htaccess'u moje pytanie, idzie to naprawić ? ^^

Jest to moje pierwsze spotkanie z KOHANA ... CI wydawał mi się bardziej logiczny no ale wszystkie początki sa (ponoć) trudne.
wujek2009
W jaki sposób wywołujesz linki?
  1. <link type="text/css" href="<?php echo URL::site('res/css/layout.css') ?>" rel="stylesheet" />
Posio
akurat na to trafiłem i to działa tylko jak to będzie wyglądało podczas automatycznego generowania w kontrolerze ?
wujek2009
Tylko pytanie dlaczego chcesz w ten sposób odwoływać się do plików IMG, CSS, JS?
Utwórz sobie nowy, oddzielny folder np. "res" (skrót od resources) i tam wrzucaj pliki.
Nawet w Zendzie, czy innym frameworku masz oddzielny folder na takie rzeczy.
Posio
no wlasnie, nie znam odpowiedzi na to pytanie... praktycznie to moja pierwsza przygoda z jakimkolwiek FW oprócz szczypnięcia CI. ok, pójdę za twoją radą.
klocu
Kohana odpłaci ci dobrym działaniem.

1) Domyślnego htaccessa nie modyfikuj
2) Załóż sobie dowolnie nazwany katalog i w nim trzymaj wszystkie skrypty, cssy, grafiki
3) Routing - tu musisz poczytać bo działa on ciut inaczej niż sądzisz
żadnych index.php (dodatkowo warto usunąć index.php z wywołania adresu - da się)
4)
  1. <link type="text/css" href="<?php echo URL::site('res/css/layout.css') ?>" rel="stylesheet" />

nie, nie , stanowcze nie. od tego jest helper HTML:
  1. echo HTML::style('media/css/screen.css');

5) Korzystając z helperów pozbywasz się bawienia w udziwnione adresowanie - podajesz bezwzględne a linki wygenerują się automatycznie w/g potrzeb.

W razie pytań wal śmiało.

--
Cytat
No i jeszcze 2gi problem być może łączący się z poprzednim. Po usunięciu index.php adres localhost/aplikacja/ działa ok ale już localhost/aplikacja/index.php wywala 404. Wiem że po prostu nie ma do niego routingu, ale z racji że nie ogarniam całkowicie htaccess'u moje pytanie, idzie to naprawić ? ^^

Rozrysuj strukturę katalogów - może być screen albo rozpiska w postaci drzewka, bo chciałbym się upewnić że to na pewno jest tym o czym myślę.

--
Już jasne - odpowiedź jest prosta - jeśli w bootstrap.php masz ustawione:
  1. Kohana::init(array(
  2. 'base_url' => '/',
  3. 'index_file' => false,
  4. ))

to jest negujesz istnienie index file to jeśli się do niego jawnie odwołasz to będziesz poszukiwać tylko kontrolera o tej nazwie, jeśli wpiszesz tam "index.php" to wtedy zapytanie będzie interpretowane tak jak chcesz.
Posio
@klocu, dzięki za rozjaśnienie tych kilku spraw i znaczne ułatwienie z tymi linkami... (przyznam się że ominąłem link helpers w dokumentacji)

Jest jakaś możliwość kontaktu z tobą oprócz forum (skrzynkę masz albo pełną albo nie przyjmujesz wiadomości) ?
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.