Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] Łatwy link z nazwą użytkownika do profilu
Forum PHP.pl > Forum > PHP > Frameworki
adrianpl20
Witam. Chcę zrobić linki do profili użytkowników w stylu "strona.pl/MonikaJakas", ale nie wiem jak to optymalnie zrobić (jak taki Route napisać). gdy dam coś takiego:
  1. Route::set('profile', '<username>')
  2. ->defaults(array(
  3. 'controller' => 'user',
  4. 'action' => 'profile',
  5. ));


To wydaje mi się, że normalne wywoływanie kontrolerów (podstron) będzie się pierniczyło.
Jak to prawidłowo zrobić? Może w tej "definicji" nowego Route, sprawdzać czy istnieje taka klasa z kontrolerem o nazwie "<username>" - jeśli tak to zwracać FALSE ?
phpion
Akurat w Kohanie machniesz to bardzo łatwo i przyjemnie. Wystarczy skorzystać z filtrów tras:
https://kohanaframework.org/3.3/guide/kohan...g#route-filters
W skrócie:
1. Pobierasz parametr kontrolera.
2. Jeśli kontroler istnieje* - kierujesz do niego czyli w zasadzie nic nie robisz.
3. Jeśli nie istnieje - dodajesz do parametrów np. username, które jest aktualną nazwą kontrolera (bo pierwszy człon adresu), podmieniasz kontroler na np. user. Wówczas powinien Ci się odpalić wybranych kontroler (tutaj: user) z dostęnym parametrem (tutaj: username).
Całość odbywa się w obrębie tablicy params - dokładasz, podmieniasz jej klucze.

* Najlepiej do tego celu użyć https://kohanaframework.org/3.3/guide-api/Kohana#find_file
Tuminure
Wydaje mi się, że bez żadnego prefixu lub suffixu nie osiągniesz poprawnego działania (szczególnie, jeżeli użytkownicy mogą zakładać sobie sami konta).

W końcu użytkownik może stworzyć sobie nazwę typu: News, Homepage, index.php lub jakikolwiek inny link, jaki posiadasz na swojej stronie.

Jasne - możesz dorobić sprawdzanie, jednak co w sytuacji gdy użytkownik założy sobie konto o wybranej nazwie, a Ty będziesz chciał dodać podstronę o identycznej nazwie? Zmusisz użytkownika do zmiany nazwy, czy może zmienisz nazwę dla swojej podstrony?
phpion
Wystarczy dodać regułę walidacji, która (oprócz unikalności nazwy użytkownika itp.) sprawdzi czy dany kontroler istnieje (nawet lepiej) wykonując żądanie na adres http://strona.pl/$username otrzymamy błąd 404.
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.