MVC Routing

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

WordPress & Azure Developer

Dit ga je doen Zowel front- als back-end development aan de online website omgeving; Het up-to-date houden van alle WordPress-sites; Koppelingen maken tussen applicaties; Meedenken en adviseren over verbeteringen; Development door middel van WordPress, Javascript, HTML en CSS; Werken binnen Scrum/Agile team. Hier ga je werken Voor een grote overheidsinstelling in Den Haag zijn wij opzoek naar een WordPress developer, met kennis en ervaring op het gebied van Azure. De organisatie zit in een grote transitie waarbij de gehele website/online omgeving vernieuwd zal gaan worden. Binnen dit Scrum/Agile team ben je verantwoordelijk voor deze grote migratie/ombouw van de omgeving. De

Bekijk vacature »

Medior .NET developer

Functie Jij gaat als Medior .NET ontwikkelaar aan de slag in ons scrumteam met 6 developers die gepassioneerd en actief bezig zijn om onze spelers kwalitatieve en mooie spelervaringen aan te bieden. Als medior .NET developer ga jij werken aan een technisch hoogwaardig platform welke bezoekerspieken verwerkt van tienduizenden tot honderdduizenden gebruikers per minuut! Ons scrumteam werkt in drie wekelijkse sprints en wij beginnen iedere ochtend met een stand-up. Jij werkt bij ons met C# .NET, .NET Core, React.JS, Xamarin, Azure, Docker en Kubernetes. Wij hechten enorm veel waarde aan het leveren van hoogwaardige en kwalitatieve code. Zodra jij de

Bekijk vacature »

PHP Developer

Functieomschrijving Vanuit het hoofdkantoor in omgeving Breda ben je als PHP/Symfony Developer niet alleen gefocust op het ontwikkelen van software. Daarnaast ben je voortdurend bezig met het zoeken naar nieuwe trends en ontwikkelingen die van waarde kunnen zijn voor de efficiëntie van software ontwikkeling. Hieronder een kort overzicht van jouw takenpakket: Het ontwerpen en implementeren van webapplicaties met het Symfony Framework; Het schrijven van een schone en efficiënte codes; Het testen van ontwikkelde applicaties om te zorgen dat ze goed functioneren en voldoen aan de eisen van de klant; Onderhouden en updaten van bestaande applicaties die zijn gebouwd met het

Bekijk vacature »

Junior PHP (Laravel) Developer

Functie omschrijving Wij zijn op zoek naar een PHP Laravel Developer! Sta je aan het begin van je carrière en ben je op zoek naar een leuke baan? Lees dan verder! Voor een softwarebedrijf in omgeving van Schiphol zijn wij op zoek naar een ervaren PHP (Laravel) Developer. Je gaat je bezighouden met het ontwikkelen van innovatieve bedrijfsapplicaties. Samen met het team, bestaande uit designers en developers, maak je mooie oplossingen voor bedrijven in diverse branches. Je zorgt dat de opgeleverde websites perfect werken en de klant meer dan tevreden is. Je kunt rekenen op een afwisselende baan met leuke

Bekijk vacature »

Junior Outsystems developer

Functie Als junior Outsystems developer wordt jij onderdeel van een multidisciplinair team van 23 software engineers. Ons team werkt agile en termen als Continuous Integration en Continuous Delivery zijn bij ons dagelijkse koek. Wij werken aan uitdagende en afwisselende projecten met als doel onze klanten een totaal oplossing aan te bieden. Als junior Outsystems developer krijg jij bij ons de kans om jezelf te ontwikkelen naar een volwaardige ervaren en gecertificeerde Outsystems developer. Jij een team met ervaren mensen (10+ ervaring) om je heen. Zo heb jij niet het gevoel dat jij meteen in het diepe wordt gegooid en uiteraard

Bekijk vacature »

Software Programmeur

Functie omschrijving Voor een informele club in omgeving Delft zijn wij op zoek naar versterking. Ben jij op zoek naar een nieuwe uitdaging als Software Programmeur lees dan snel verder! Als ontwikkelaar kom je terecht op een afdeling van 6 medewerkers. Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Er wordt voornamelijk gewerkt met PHP, Java en

Bekijk vacature »

PHP Laravel developer

Functie omschrijving Weet jij alles van Laravel en krijg je energie van het ontwikkelen van software hiermee? Laat snel wat van je horen want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch. Jouw taken zullen bestaan uit: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Documentatie schrijven over applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein softwarebedrijf. Er werken ongeveer 15 medewerkers, verdeeld in meerdere teams, zoals back-end en front-end development, projectmanagement

Bekijk vacature »

Traineeship Front-end developer (WO, 0 tot 3 jaar

Functie Zoals beschreven ga je vanaf start aan de slag bij een passende opdrachtgever, hierbij kijken ze echt naar jouw wensen, kennis/ervaring maar ook de reisafstand. Momenteel hebben ze meerdere klanten waarbij ze groepen hebben opgezet wat maakt dat er diverse uitdagende kansen liggen. Naast het werken bij de opdrachtgever, en het volgen van de masterclasses, zul je regelmatig met de andere trainees in contact zijn. Niet alleen op professioneel vlak maar juist ook bij de borrels en kwartaaluitjes! Kortom; een jaar lang hard aan jezelf werken in combinatie met gezelligheid en plezier. Spreek dit jou aan? Dan komen we

Bekijk vacature »

C# developer

Functie Als C# ontwikkelaar ben jij de spin in het web bij deze organisatie. Jij begeleidt en traint de field engineers die bij de klanten machines leveren en installeren. Daarnaast ondersteun jij de field engineers als zij bij de klant vastlopen bij het installeren van de machine m.b.t. software matige vragen. Jouw doel is dan ook om de technische kennis van de field engineers door middel van training zoveel mogelijk uit te breiden. Dit om ervoor te zorgen dat zij zelfstandiger software matige problemen kunnen oplossen. Ook ben jij verantwoordelijk voor het bedenken van software oplossingen voor klanten en dit

Bekijk vacature »

Junior PHP Developer

Functieomschrijving Junior PHP Developer gezocht! Voor een opdrachtgever in de regio Gelderland zijn wij op zoek naar een Junior PHP Developer die onderdeel gaat worden van het ontwikkelingsteam van deze organisatie. In deze functie ga jij aan de slag met het schrijven van software voor de aansturing van en het managen van windparken en bijbehorende onderdelen. Hiernaast ga jij je bezighouden met het ontwikkelen, testen en onderhouden van diverse webapplicaties. Het team waarin je komt te werken bestaat uit 3 developers, hierdoor krijg je veel verantwoordelijkheid en de kans om jezelf verder te ontwikkelen. Er wordt echter wel van je

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Voor een mooi softwarebedrijf in omgeving Ridderkerk zijn wij op zoek naar een Embedded Software developer. Ben jij enthousiast en een echte team player? Lees dan snel of dit iets voor jou is! Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Laat dan snel wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot

Bekijk vacature »

Softwareontwikkelaar Cleopatra

Functieomschrijving Voor de gemeente Amsterdam zijn wij op zoek naar een softwareontwikkelaar Cleopatra. De directie Verkeer en Openbare ruimte van de gemeente Amsterdam beschikt over een softwareapplicatie, "Cleopatra", waarmee geautomatiseerde handhaving plaatsvindt (op basis van kentekenherkenning) van bepaalde gebieden waarin toegangseisen worden gesteld aan het verkeer. Voorbeelden ervan zijn de milieuzones, de zone zwaar verkeer, handhaving van brom- en snorfietser op het fietspad en autoluwe gebieden. Voor de doorontwikkeling en uitbreiding ervan zijn gespecialiseerde softwareontwikkelaars nodig die helpen bij het programmeren van de handhavingsmodules voor nieuwe gebieden en het verbeteren en bijwerken van de bestaande onderdelen van de softwareapplicatie. Functie

Bekijk vacature »

C# .NET Developer

Functie omschrijving C# .NET Developer gezocht. Ben jij een full stack developer die op zoek is naar een nieuwe uitdaging binnen een leuk snel groeiend bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Developer met ervaring op het gebied van .NET die een organisatie in de regio Bennekom gaat versterken. Jij gaat je binnen dit bedrijf vooral bezighouden met het verbeteren van de functionaliteiten van hun dataplatform. Samen met andere ontwikkelaars denk je mee in oplossingsrichtingen, architectuur en nieuwe technologieën. Bedrijfsprofiel De organisatie waar je voor gaat werken heeft een onafhankelijk dataplatform ontwikkelt voor de agrarische sector.

Bekijk vacature »

Mendix Developer

For our client in Amsterdam, we are looking for a Senior Mendix Developer. Company description Our client is an IT Consultancy company who’s been active for 10 years now. With their ambitious team, they are working with different clients in order to help them with analyzing their data and giving advice to them, regarding how they can use their data in the smartest ways, or to make sure that their mobile or web applications are working efficiently. As you get a glimpse of various industries, it is guaranteed that no day will be the same. Job description As a Mendix

Bekijk vacature »

Developer

Functie omschrijving Gaat jouw hart sneller kloppen van software developen in C#.NET? Voor een softwarebedrijf in regio Den Bosch zijn wij op zoek naar een C# programmeur. Lees snel verder! Wat ga je doen? Je gaat werken met C# en ASP.NET MVC Framework om onder meer webapplicaties, webshops en websites te ontwikkelen. Je optimaliseert de bestaande software en helpt mee aan het automatiseren van bedrijfsprocessen. Je gaat samen met je collega's de juiste oplossing op basis van de wensen van de klanten uitwerken tot een mooi product. Bedrijfsprofiel Het ontwikkelen van softwareoplossingen en kantoorautomatiseringen is waar dit bedrijf voor staat.

Bekijk vacature »

Pagina: « vorige 1 2

Wouter J

Wouter J

15/12/2013 19:36:28
Quote Anchor link
Je wilt altijd flexibiliteit houden over hoe je routes eruit zien.
 
PHP hulp

PHP hulp

22/12/2024 09:11:48
 
Mark Hogeveen

Mark Hogeveen

15/12/2013 21:12:35
Quote Anchor link
Conclusie: routes netjes opslaan, en maken zoals je ze zelf wil. Geen gedoe met bestandsnamen.
 
Ozzie PHP

Ozzie PHP

15/12/2013 21:30:11
Quote Anchor link
Ja, inderdaad. Je krijgt dan dus zoiets:

route = contact:
- controller = ContactController
- action = IndexAction
 
Mark Hogeveen

Mark Hogeveen

16/12/2013 20:42:10
Quote Anchor link
Dit heb ik ondertussen:

index.php
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
<?php
// index.php

require "Request.php";
require "Router.php";

$router = new Router;

$router->add(array("route" => "", "destination" => "welcome.php", "methods" => array("all")));
$router->add(array("route" => "help", "destination" => "help.php", "methods" => array("GET"))); // kan het zo goed "all" zijn (alle methods)
$router->add(array("route" => "contact", "destination" => "contact.php", "methods" => array("GET"))); // kan het zo goed "all" zijn (alle methods)
$router->add(array("route" => "submit", "destination" => "submit.php", "methods" => array("POST")));

// Ingewikkelder
$router->add(array("route" => "shop/product/info/", "destination" => "productInfo.php", "methods" => array("GET", "POST"));

$router->matchRequest(new Request);
?>

Router.php
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php

class Router {
    
    private $_routes;
    private $_destination;
    private $_notFoundDestination = "notfound.php";
    
    public function add(array $route = array()) {
        
        $this->_routes[] = $route;
    }

    
    public function matchRequest(Request $request) {
        
        if($request->getArgument('route') == "") {
            
            $this->_destination = "welcome.php"; // Startpagina, normaal index.php
            $this->navigate();
            
        }
else {
            
            for($i = 0; $i < count($this->_routes); $i++) {
                
                if($this->_routes[$i]["route"] == $request->getArgument('route')) {
                    
                    if(in_array($request->getMethod(), $this->_routes[$i]["methods"]) || in_array("all", $this->_routes[$i]["methods"])) {
                        
                        $this->_destination = $this->_routes[$i]["destination"];
                        $this->navigate();
                        return;
                    }

                    
                    $this->notFound(); // verkeerde method
                    return;
                }
            }

            
            $this->notFound(); // Loop door alle mogelijke routes gedaan, niks gevonden
        }
    }

    
    public function navigate() {
        
        require $this->_destination;
    }

    
    public function notFound() {
        
        require $this->_notFoundDestination; // Error 404 pagina
    }
}

?>

Request.php
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
<?php
// Request.php

class Request {
    
    public function getMethod() {
        
        return $_SERVER['REQUEST_METHOD'];
    }

    
    public function getArgument($name) {
        
        return isset($_GET[$name]) ? $_GET[$name] : "";
    }
}


?>

- Je kunt bij het definieren van een route aangeven of deze werkt op alle methods, of alleen post of get methods.
- Je geeft bij de route de bestandsnaam (of pad naar een bestand), de route is daar onafhankelijk van

Graag hoor ik commentaar, en dat zal vast wel veel zijn. Want ik weet dat deze code niet perfect is. Toch wilde ik het laten zien.
Gewijzigd op 16/12/2013 20:51:40 door Mark Hogeveen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

16/12/2013 23:34:01
Quote Anchor link
je kan nog een stapje verder gaan met variabele routes zoals die ook in dit forum gebruikt worden:

http://www.phphulp.nl/php/forum/topic/mvc-routing/93198

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
<?php
$router
->add(array("route" => "forum/topic/:slug/:id", "destination" => "forum-showtopic.php", "methods" => array("all")));

// de controller
class ShowtopicController extends BaseController
{
    public function indexAction($slug, $id)
    {

        // test
        echo 'slug: ' . $slug . '<br>';
        echo 'id: ' . $id . '<br>';
    }
}

?>
Gewijzigd op 16/12/2013 23:47:01 door Frank Nietbelangrijk
 
Ozzie PHP

Ozzie PHP

17/12/2013 00:07:18
Quote Anchor link
@Frank, wat wordt bedoeld met "slug" en wat houdt methods "all" in?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/12/2013 00:38:38
Quote Anchor link
Ozzie een slug is een gedeelte van je url: bijvoorbeeld: hoe-kan-ik-grote-bestanden-uploaden

En je tweede vraag zou je aan Harry moeten vragen maar ik dacht dat het voor GET & POST staat.
 
Ozzie PHP

Ozzie PHP

17/12/2013 01:38:58
Quote Anchor link
>> Ozzie een slug is een gedeelte van je url: bijvoorbeeld: hoe-kan-ik-grote-bestanden-uploaden

Wat is dan de bedoeling van een slug? Geef je daar eigenlijk de action mee aan? Ik dacht dat wat jij een slug noemt gewoon bij de route hoort. Dus zeg maar zoiets:

route = "forum/topic/hoe-kan-ik-grote-bestanden-uploaden/:id"

Of... wacht even.. bedoel je dat het de (variabele) titel van een topic is? En zo ja, waarom dan niet:

route = "forum/topic/:title/:id"

>> En je tweede vraag zou je aan Harry moeten vragen maar ik dacht dat het voor GET & POST staat.

oké
 
Wouter J

Wouter J

17/12/2013 08:04:04
Quote Anchor link
>> Of... wacht even.. bedoel je dat het de (variabele) titel van een topic is? En zo ja, waarom dan niet:

Omdat we dat nou eenmaal de slug noemen. Dat komt omdat het niet de titel is, je hebt spaties vervangen met dashes, alles gelowercased en url-unsafe-characters eruit gehaald. Dat noemen we een slugified title, afgekort een slug.
 
Ozzie PHP

Ozzie PHP

17/12/2013 15:04:58
Quote Anchor link
Dankjewel voor je toelichting Wouter... maar stel nu dat het iemands username is, dus

forum/user/wouterj/123

Is "wouterj" dan ook een "slug"?

Wat versta je precies onder een slug? En is iedere variabele die in de url staat en niet een id is automatisch een slug?
 
Mark Hogeveen

Mark Hogeveen

17/12/2013 15:31:04
Quote Anchor link
Bij de methods staat "all" inderdaad voor POST, GET, maar ook voor PUSH of PULL.
Maar ik had verwacht dat mijn code eigenlijk een rommeltje was?

De Request class stelt eigenlijk niks voor. Ik zou niet weten wat ik er mee moet.
 
Wouter J

Wouter J

17/12/2013 17:05:47
Quote Anchor link
Ja, je code is een rommeltje. Maar als ik heel eerlijk ben had ik geen zin om weer met een nieuw persoon het process van een framework te doorlopen... Het zelf maken van een framework heb ik nog nooit begrepen, je komt dan alleen maar met meer vragen te zitten. Het gebruiken van een bekent framework zorgt ervoor dat je al 1001 voorbeelden en best-practises op het internet kunt vinden, daardoor leer je het een stuk gemakkelijker.

Maar ja, omdat je het anders zielig is dat je het verkeerde aanleerd :)
- Routes zijn ook objecten, een Route object dus.
- Het matchen van een URL zou je moeten overlaten aan het Route object, dat is degene die weet wat er in het Route object staat, de Router mag daar niks van weten. Als je het heel strict bekijkt ga je nog een stap verder en zeg je dat je niet wilt beperken op URLs, dan maak je nog een UrlMatcher klasse die het matchen regelt.
- Kijk eens naar php namespaces en autoloading
- De router is alleen voor het vinden van een route, het bepalen wat de not found route is en het bepalen wat de destination is is niet het doel van de Router.
- niet elke variabele die je in je klasse gebruikt is een property van die klasse. Slechts een paar zijn er een property.
- "$this->_destination = "welcome.php"; // Startpagina, normaal index.php" bepaal niks in de klasse zelf. Als je nu welcome.php aanpast moet je je klasse aanpassen, en klassen aanpassen voor zulke dingen is verboden. Je startpagina is gewoon een route zoals elke andere.
- Je gebruikt een hele vreemde manier wat betreft het laden van een controller. Wat doe je precies in een controller, ik heb niet het idee dat je daar iets van begrepen hebt (sorry).
- Je Request klasse is erg gelimiteerd. Het is nu gebonden aan: Het gebruik van superglobals. (gebruik nooit superglobals in een klasse!) Tevens is getArgument nu gebonden aan het gebruik van $_GET. Ik zou altijd werken met $_SERVER['PATH_INFO']
 
Mark Hogeveen

Mark Hogeveen

17/12/2013 17:45:53
Quote Anchor link
Ik heb inderdaad toch maar naar wat frameworks gekeken. (op github kun je de hele codes doorspitten)
Wat ik eigenlijk wel begrijp, maar niet het voordeel van inzie is het volgende:
Een simpele doorsnee route ziet er zo uit: /controller/action/paramaters
Het is dan de bedoeling dat de gevraagde controller wordt aangeroepen, en dat een methode van die controller wordt aangeroepen, die ook in de route staat.
controller/action/parameters =
album/bekijk_foto/1042 =
AlbumController/view/1042 zegt eigenlijk:

$AlbumController->view(1042);

- Wat als je meerdere controllers nodig hebt?
- Wat als je meerdere parameters hebt?

- Hoe doet mod_rewrite de GET variabelen normaal doorgeven? Daarmee bedoel ik: ?action=activate&user=123
Die zou kunnen worden herschreven naar /activate/123 of niet?
De namen van de parameters zijn weg! Hoe doe ik nou in mij PHP aangeven welke parameter ik wil? ($_GET['action'] kan toch niet meer? naam is weg)
Gewijzigd op 17/12/2013 17:47:14 door Mark Hogeveen
 
Dos Moonen

Dos Moonen

17/12/2013 19:50:45
Quote Anchor link
Het hangt er vanaf hoe geavanceerd je routes zijn. Kijk eens op http://kohanaframework.org/3.3/guide/kohana/routing#request-parameters om te zien hoe Kohana het beschikbaar stelt.
 

Pagina: « vorige 1 2



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.