PHP url routing en mapping params

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mr Beronne

Mr Beronne

21/04/2016 17:20:56
Quote Anchor link
Ik heb een tijdje gewerkt met het PHP framework Laravel welke gebruik maakt van een handig routing mapping systeem. Hiermee kan je vooraf routes / url definiëren. Nu ben ik bezig met het maken van een eigen mvc om mijn PHP kennis verder te ontwikkelen.


Ik heb een router.php bestand waar ik van te voren al mijn routes in zet.

Routes.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
Route::get("/", "HomeController@index");
Route::get("/product/{id}", "ProductController@getProductById");
\

In dit voorbeeld heb ik twee GET routes. De eerste parameter is de url de tweede parameter is de
controller en methode. In de eerste parameter zie je bv staan: /product/{id} waar {id} een placeholder
is voor een id in de url.

Nu zit ik met het volgende probleem. Het is de bedoeling dat ik door alle routes heen loop en deze moet controleren op de binnenkomende URL. Alleen zijn het twee verschillende urls

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
echo $url = $_SERVER["REQUEST_URI"];
// resultaat /product/2

// route = /product/{id}


Ik kan d.m.v preg_match_all wel de {} uitlezen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
preg_match_all('/\\{(.*?)\\}/', '/product/{id}', $matches);

// print matches
echo '<pre>';
    print_r($matches);
echo '</pre>';

// Resultaat van print
Array
(
    [0] => Array
        (
            [0] => {id}
        )

    [1] => Array
        (
            [0] => id
        )

)


Nu is mijn vraag of iemand mij kan helpen hoe dit nu werkt. Wat mis ik en waar zal ik moeten beginnen.
 
Er zijn nog geen reacties op dit bericht.



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.