Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Kohana] Łatwy link z nazwą użytkownika do profilu
adrianpl20
post 24.07.2015, 13:21:52
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 20.02.2014

Ostrzeżenie: (10%)
X----


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 ?

Ten post edytował adrianpl20 24.07.2015, 13:22:45
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
phpion
post 27.07.2015, 09:20:12
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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
Go to the top of the page
+Quote Post
Tuminure
post 27.07.2015, 10:03:58
Post #3





Grupa: Zarejestrowani
Postów: 178
Pomógł: 49
Dołączył: 16.04.2012
Skąd: Bytom

Ostrzeżenie: (0%)
-----


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?

Ten post edytował Tuminure 27.07.2015, 10:05:56
Go to the top of the page
+Quote Post
phpion
post 27.07.2015, 13:06:42
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.06.2025 - 05:23