Permalänk
Medlem

Skapa clean-urls

Tjenare,

Jag försöker lära mig att bygga en egen MVC-sida, för att slå på stort så försöker jag i samma veva lära mig att skapa "clean-urls".

Jag har försökt pyssla med det tidigare utan större framgång, så nu vänder jag mig till er allvetande.

Mina urls ser i nuläget ut som följande. index.php?page="CONTROLLERNAME"&action="CONTROLLERMETHOD(add/edit/view)"&id="NOT REQUIRED"

Min .htaccess-fil ser ut såhär just nu, men den lär vara rent skrot:

RewriteEngine On RewriteRule ^(.*)$ index.php?page=$1&action=$2&id=$3 [L]

Hoppas någon kan hjälpa mig!

Med vänlig hälsning, Simon

Permalänk
Medlem

Man brukar göra så här:

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?/$1 [L]

Rad 2 & 3 är till för att man ska kunna nå vanlig filer och mappar.

Så när du går in på minsida.se/controller/metod/id/merId/etc så görs det om till minsida.se/index.php?/controller/metod/id/merId/etc

Nu kan du i PHP skriva:

$urlPaths = explode('/', $_SERVER['QUERY_STRING']);

Så kommer du få en array som ser ut så här:

array(0 => 'controller', 1 => 'metod', 2 => 'id', 3 => 'merId');

Sedan laddar du bara in rätt controller och kör metoden med argumenten.

Btw, när jag lärde mig om MVC i PHP så skapade jag också ett litet eget MVC ramverk. Om du vill kan jag lägga upp det.

Visa signatur

Programmerare -> PHP | HTML | CSS | JS | Java.

Permalänk
Medlem

Ok, tack för svaret!

Jag ska testa htaccessfil + $utlpaths när jag kommer hem!

Det vore helt underbart om du kunde dela med dig av det! Har kommit en bit på vägen men jag tror inte att strukturen är optimal.

Med vänlig hälsning, Simon

Skickades från m.sweclockers.com

Permalänk
99:e percentilen

Ska följas.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem

https://github.com/s4wny/MiniMVC/tree/master/MiniMVC

Där är det. Kolla in manulen.doc, scrolla ner till "Filer & Struktur" och läs om vad varje fil gör.
Sedan kan du kolla in de filer som du tycker verkar vara intressanta.

Intressanta filer: core.php (tar hand om snygga urler) och load.php (laddar in rätt filer).

Visa signatur

Programmerare -> PHP | HTML | CSS | JS | Java.

Permalänk
Medlem

Tack så jättemycket, jag ska kolla igenom koden och försöka förstå varje steg. Tror att ditt upplägg skiljer sig lite från mitt hopp-plock vad gäller mvc-strukturen iaf

Skulle du nu i efterhand säga att det är så du skulle bygga ett ramverk från början med de erfarenheter du samlat på dig efteråt?

Jag återkopplar när jag gått igenom koden!

Med vänlig hälsning, Simon

Permalänk
Medlem
Skrivet av simowewe:

Tack så jättemycket, jag ska kolla igenom koden och försöka förstå varje steg. Tror att ditt upplägg skiljer sig lite från mitt hopp-plock vad gäller mvc-strukturen iaf

Skulle du nu i efterhand säga att det är så du skulle bygga ett ramverk från början med de erfarenheter du samlat på dig efteråt?

Jag återkopplar när jag gått igenom koden!

Med vänlig hälsning, Simon

Ja, jag hade byggt det så där. Men om jag skulle lägga till fler funktioner skulle jag ha lagt HMVC. Så att man kan ladda in controllers i controllers.
Jag hade också lagt till view-models (HMVVMC? )

Utöver det skulle jag lägga till ett bättre stöd för moduler (plugins), nuvarande system går ut på att moduler läggs i filen functions.php.

Men själva MVC biten skulle jag inte ändra på.

Visa signatur

Programmerare -> PHP | HTML | CSS | JS | Java.

Permalänk
Medlem

Btw, jag byggde mitt MVC ramverk med hjälp utav den här guiden: http://net.tutsplus.com/tutorials/php/create-your-first-tiny-...

Visa signatur

Programmerare -> PHP | HTML | CSS | JS | Java.

Permalänk
Medlem
Skrivet av Sony?:

Btw, jag byggde mitt MVC ramverk med hjälp utav den här guiden: http://net.tutsplus.com/tutorials/php/create-your-first-tiny-...

Jag har också använt mig av den som grund, tyckte den var riktigt bra! Jag har kollat igenom din MiniMVC och tycker du löser det snyggt med clean-urls! Det jag funderar lite på nu är någon slags lösning som generaliserar alla routes beroends på vilka controllers, och actions i dem, som finns! Då slipper man (kanske) lägga till en ny route för varje sida man skapar?

Permalänk
Medlem
Skrivet av simowewe:

Jag har också använt mig av den som grund, tyckte den var riktigt bra! Jag har kollat igenom din MiniMVC och tycker du löser det snyggt med clean-urls! Det jag funderar lite på nu är någon slags lösning som generaliserar alla routes beroends på vilka controllers, och actions i dem, som finns! Då slipper man (kanske) lägga till en ny route för varje sida man skapar?

Men behöver inte lägga till en ny route för varje sida

Du kan skriva

/controller/metod/arg1/arg2/... /controller/metod/ /metod (väljer default controllern från settings.php)

Visa signatur

Programmerare -> PHP | HTML | CSS | JS | Java.