Rabbid Skrevet 8. april 2008 Rapporter Del Skrevet 8. april 2008 (endret) Holder på å skrive en URL-håndterer til prosjektet mitt, men har et problem her. Greia er at den ikke legger inn riktig verdi for de forskjellige elementene, som du kan se i eksempelet her: http://rodtang.zapto.org/error/+id/45343/+...use/+animal/dog Her skal id=45343, item=house og animal=dog, men som dere ser på siden så er det ikke det som kommer opp. Her er mockup-koden jeg skrev for å håndtere URLen, litt rustent: private function parse_request($controller_uri){ $parsed_request = null; $request_array = preg_split('/\//', $controller_uri, -1, PREG_SPLIT_NO_EMPTY); # Split ut the request into an array, deleting all empty elements $this->controller_name = strtolower($request_array['0']); $request_array = array_slice($request_array, 1); # Slice of the module name if(count($request_array) == '1'){ $parsed_request['id'] = $request_array['0']; }else{ foreach($request_array as $request_item){ if($request_item{0} =='+'){ $request_name = substr($request_item, 1, strlen($request_item)); $request_content = next($request_array); $parsed_request[$request_name] = $request_content; } } } return $parsed_request; } $controller_uri = /error/+id/45343/+item/house/+animal/dog Er sikkert noe skikkelig teit siden koden ikke er så overiktlig som den burde være. Takker for alle svar! Endret 8. april 2008 av Rabbid Lenke til kommentar
MC2 Skrevet 9. april 2008 Rapporter Del Skrevet 9. april 2008 (endret) Noe sånt kanskje? <?php $uri = "/+key/value/+i/a"; $parts = explode("/",$uri); $params = array(); for($k=0; $k<sizeOf($parts); $i++) { if(substr($parts[$k],0,1) === "+") { $params[substr($parts[$k],1)] = (array_key_exists($parts,$k+1)) ? $parts[++$k] : null); } } Endret 9. april 2008 av MC2 Lenke til kommentar
jorgis Skrevet 9. april 2008 Rapporter Del Skrevet 9. april 2008 Hvorfor ikke bare bruke mod_rewrite? Gjør sånne ting mye enklere. Lenke til kommentar
Rabbid Skrevet 9. april 2008 Forfatter Rapporter Del Skrevet 9. april 2008 (endret) MC2: Forslaget ditt funket fint, men har kommet over en ny idé nå, som jeg gjerne skulle likt deres mening på. Istedet for det jeg har nå tenkte jeg på noe som dette: /bugs (leder til bugs-modulen) /bugs:34344 (leder til bugs-modulen og gir den verdien 34344 som id) /bugs/tag:FIXED (leder til bugs-modulen og gir den verdien "FIXED" som tag) Er denne er den med masse plusser best? Et lang url blir til sammenligning slik: /bugs/sort:id/filter:fixed/date:2008/maintainer:hans /bugs/+sort/id/+filter/fixed/+date/2008/+maintainer/hans Endret 9. april 2008 av Rabbid Lenke til kommentar
MC2 Skrevet 9. april 2008 Rapporter Del Skrevet 9. april 2008 Hvorfor ikke ha noen patterns til forskjellige muligheter? Feks. /bugs (til bugs generelt eller hva det skulle være) /bugs/1293 (matcher tallene) /bugs/something (hvis ikke tall må det være tag ?) Men altså hvorfor skal du ha dette istedet for vanlig ?key=value etc.? Det var er jo laget for en grunn. Når man som oftest pleier å ha en slik løsning med at query verdier kommer rett i pathen er når man prøver å oppnå en trestruktur for innholdet. Feks. på dagbladet ser pathene sånn ut /nyheter/2008/04/09/532041.html, da ser du /<kategori>/<år>/<måned>/<dag>/<artikkel id>. Altså, det er grunn den delen heter "path". Når det kommer til det siste eksemplet så burde du nok bruke den vanlige query løsningen (med ?=&) for at det ikke er struktur i den URIen. Lenke til kommentar
Rabbid Skrevet 9. april 2008 Forfatter Rapporter Del Skrevet 9. april 2008 (endret) Syns ?key=value gir så vanvittig stygge lenker, men trenger noe for å enkelt gi informasjon til modulene. Det siste eksempelet var nå ikke realistisk, var bare for å vise dem begge ved siden av hverandre. Systemet inneholder ganske mange forskjellige moduler som akkurat nå mottar informasjon gjennom masse "?key=value"-greier som ikke er særlig oversiktlig eller spent. Alt jeg har satt inn her er eksempler og ikke særlig strukturerte. Endret 9. april 2008 av Rabbid Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå