Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] routing-zamiana adresu z duzych na male znaki
Forum PHP.pl > Forum > PHP > Frameworki
janek9
Witajcie,

Czy jest mozliwosc, aby np wpisany adres z duzych liter przekonwertowac poprzez routing do malych? Jezeli tak to w gdzie i w ktorym miejscu trzeba to ustawic.
Ravv
Hmm, nie czaję - przecież wpisanie np. HTTP://WORTAL.PHP.PL w przeglądarce spowoduje iż sama zamieni adres na małe litery...

Sprecyzuj o co Ci chodzi smile.gif.
janek9
Cytat(Ravv @ 25.08.2009, 12:18:25 ) *
Hmm, nie czaję - przecież wpisanie np. HTTP://WORTAL.PHP.PL w przeglądarce spowoduje iż sama zamieni adres na małe litery...

Sprecyzuj o co Ci chodzi smile.gif .


a wiec tak: w akcji pobiera mi nazwe uzytkownika w profilu np. nazwaportalu.pl/user/lolek. I gdy wpisze nazwaportalu.pl/user/LOLEK wowczas to nie jest to samo. Wowczas powoduje mi to ze samego siebie mozna dodac do znajomych bo mam tak to zaprogramowane. W akcji pobiera z requesta np. 'login' i ta wartosc wedruje do modelu gdzie jest porownywana. Czyli z tego wynika ze lolek a LOLEK to nie jest to samo. Dlatego chcialbym wiedziec czy w routingu idzie takie cos ustawic, aby obojetnie co sie wpisze ustawialo zamiast LOLEK na lolek...
Cysiaczek
Możesz ustawić w routingu, żeby Ci nie traktował LOLKA jak lolka (użyj requirements), ale jeśli chcesz konwertować, to proponuję jakiś filtr przed odpaleniem akcji. Ja mam zawsze jeden filtr o nazwie setupFilter, w którym dodatkowo konfiguruję aplikację.

Pozdrawiam
Ravv
Nie możesz w akcji po pobraniu loginu użyć na zmiennej 'login' funkcji $login = strtolower( $request->getParameter('login') )?

PS.
Jeżeli rozpoznajesz użytkownika po loginie (a nie np. po id) to pole 'login' w bazie powinno mieć dodatkowo atrybut UNIQUE (no wiadomo, ale tak napiszę dla przypomnienia winksmiley.jpg )...
poza tym zapoznaj się z sfPropelRoute i $this->getObject() w akcji, może Ci conieco przyspieszyć projektowanie winksmiley.jpg.
janek9
Dobra jezeli chce w requirements ustawic, zeby tylko byly male znaki..jak to napisac w requirements?
BigB
Poczytaj o wyrażeniach regularnych, może to coś Ci pomoże. Ale nie wiem, czemu chcesz ograniczać usera i zabraniać mu podawania wielkich liter. Po prostu przy pobieraniu z bazy, parametr z requesta zamieniaj na małe znaki.

Ale jest też druga sprawa. Pomyślałeś o tym, że jeśli ktoś będzie miał konto LoLeK, a Ty wszystko bedziesz zamieniał na małe litery (a w bazie będą mieszane), to co wtedy? Nie znajdzie usera. Chyba, że z poziomu zapytania do bazy zamienisz też te pobierane dane na małe litery, ale nie wiem czy tak się da.
Pr0100
Cytat
Ale jest też druga sprawa. Pomyślałeś o tym, że jeśli ktoś będzie miał konto LoLeK, a Ty wszystko bedziesz zamieniał na małe litery (a w bazie będą mieszane), to co wtedy? Nie znajdzie usera. Chyba, że z poziomu zapytania do bazy zamienisz też te pobierane dane na małe litery, ale nie wiem czy tak się da.


a jeżeli będzie miał w nicku "/"? smile.gif Do tego się używa slugów
janek9
No macie racje, ze nie znajdzie sie usera przy filtrowaniu nazwy..Ale nie wiem jak to zrobic, zeby zarowno Lolek byl traktowany tak samo jak LOLEK, albo LoLEk itp. Dzieki sfWidgetPropelUnique traktuje mi jako jeden i ten sam login, natomiast w przy pobieraniu tego parametru z requesta juz tak nie jest i traktuje te nazwy oddzielnie czyli jak oddzielnych userow.

Cytat(Pr0100 @ 27.08.2009, 22:53:52 ) *
a jeżeli będzie miał w nicku "/"? smile.gif Do tego się używa slugów


nie nie, ja ustawilem dozwolone znaki w nicku tak zeby pasowalo czyli pozbylem sie znakow specjalnych i tylko: litery(bez polskich), cyfry, myslnik i znak podkreslenia. Takze tutaj jest ok.
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.