Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Prosty routing
Forum PHP.pl > Forum > Przedszkole
MateuszS
Witam, mam prosty problem z routingiem w kohanie. Ogólnie jest to dla mnie trochę czarna magia mimo ton przeczytanej dokumentacji. Mianowicie chcę stworzyć prosty routing strona.pl/login tak żeby przy przejściu na tą stronę odpalił się kontroler login.php /9 Controller_Login i akcję index), który sobie stworzyłem. Udało mi się stworzyć znacznie bardziej skomplikowane struktury routingu a z tym prostym mam problem.

To nie działa:
  1. Route::set('login', 'login')
  2. ->defaults(array(
  3. 'controller' => 'login',
  4. 'action' => 'index'
  5. ));


Próbowałem z nawiasami itd. ale nie śmigało
Evinek
  1. Route::set('auth', '<action>',
  2. 'action' => '(login|logout)'
  3. ))
  4. ->defaults(array(
  5. 'controller' => 'Auth'
  6. ));


Takie coś znalazłem w dokumentacji, spróbuj może coś w ten sposób?
Dziwi mnie, że to nie działa bo raczej powinno moim zdaniem (patrząc w dokumentacje).

Może spróbuj zmienić parametr name (pierwszy w funkcji set) na coś innego?

I w ogóle jeden kontroler powinien zajmować się logowaniem jak i wylogowaniem, nie twórz osobno na logowanie bo to nie potrzebne.
MateuszS
No właśnie próbowałem ten przykład i lipa. Nie działa.

login.php
  1. <?php defined('SYSPATH') or die('No direct script access.');
  2.  
  3. class Controller_Login extends Controller_Index
  4. {
  5.  
  6. public function action_index()
  7. {
  8.  
  9. }
  10.  
  11. }


i moje routingi
  1. Route::set('login', 'login')
  2. ->defaults(array(
  3. 'controller' => 'login',
  4. 'action' => 'index'
  5. ));
  6.  
  7. Route::set('auth', '<action>', array(
  8. 'action' => '(login|logout)'
  9. ))
  10. ->defaults(array(
  11. 'controller' => 'login'
  12. ));
  13.  
  14.  
  15. Route::set('default', '(<controller>(/<action>(/<id>)))')
  16. ->defaults(array(
  17. 'controller' => 'index',
  18. 'action' => 'index',
  19. ));


Może coś się konfliktuje?
Evinek
  1. Route::set('custom', 'custom')
  2. ->defaults(array(
  3. 'controller' => 'welcome',
  4. 'action' => 'index',
  5. ));


Taki przykład znalazłem, więc powinno działać.
Usuń ten drugi routing. Może .htaccess masz źle ustawione?
Spróbuj odpalić tak:
localhost/index.php/login
Jeśli nie zadziała to musisz mieć coś źle skonfigurowane.

Ogólnie powinno działać.

@EDIT:
W ogóle coś masz w login? Czy wyświetla error 404? Bo jeśli masz puste to nie dziw się, że nic nie wyświetla...
MateuszS
Owszem 404 ale właśnie nie powinno bo kontroler jest utworzony, dziedziczy po kontrolerze odpowiadającym za widok więc powinna pokazać się strona. Jak widać jest tam też mój routing newsów który działa idealnie a został stworzony analogicznie. Plik .htaccess:

Kod
# Turn on URL rewriting
RewriteEngine On

# Installation directory
RewriteBase /kohana-parys/

# 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]



//edit ok dziwna rzecz się stała, zmieniłem nazwę pliku na logins.php po czym z powrotem na login.php i załapało. Tak myślałem że tu jakieś X-Files jest. Dzięki
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.