MVC friendly urls

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Starter/junior PHP developer

Functie Momenteel zijn ze op zoek naar een junior PHP developer om het team te versterken. Als back-end developer bouw je de enterprise software die hun bedrijf helpt bij haar primaire processen. Afhankelijk van de omvang van het project werk je in een klein team aan een project. Ze hebben dagelijkse stand-ups en elke twee weken een scrumsessie, begeleid door de Scrum Master, waar je je ideeën kunt presenteren en samen met de Product Owner kunt werken aan het beste product. Ze vertrouwen enorm op hun eigen bedrijfssoftware. Dit geeft hun een groot voordeel ten opzichte van hun concurrentie. Zo

Bekijk vacature »

ERP Developer fleet managementsysteem

Wat ga je doen als ERP Developer fleet managementsysteem? Als ERP developer speel jij een belangrijke rol bij het doorvoeren van wijzigingen en verbeteringen binnen het fleet managementsysteem. Jouw expertise op het gebied van ERP systemen stelt jou in staat om de applicatie optimaal te laten functioneren en te blijven ontwikkelen. Als lid van het IT-team werk je nauw samen met andere developers en het business team om het fleet managementsysteem te integreren met andere systemen. Je bent verantwoordelijk voor het ontwikkelen van nieuwe functionaliteiten en het implementeren van verbeteringen op basis van de wensen en eisen van onze klanten.

Bekijk vacature »

Medior Java developer (fullstack)

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

OutSystems developer

Dit ga je doen Klanten adviseren over de mogelijkheden van OutSystems; OutSystems oplossingen ontwikkelen en implementeren; Stakeholdermanagement; Kennis en expertise up to date houden en delen met het team. Hier ga je werken Onze opdrachtgever, gevestigd in regio Amsterdam, is een innovatieve dienstverlener die zich richt op grote corporates in verschillende sectoren. Doordat je bij veel verschillende klanten aan de slag zal gaan is geen enkel project hetzelfde. De organisatie kenmerkt zich door hoge mate van professionaliteit en innovatieve oplossingen. In de rol van OutSystems developer zal jij verschillende grote klanten helpen om efficiënte OutSystems oplossingen te ontwikkelen en implementeren.

Bekijk vacature »

Low Code Developer voor o.a. overheidsprojecten!

Bedrijfsomschrijving Wil jij ook behoren tot de specialist in Low Code? Dan zou ik zeker aanraden om verder te lezen. Deze organisatie is ooit opgericht door twee studenten en is inmiddels uitgegroeid tot een serieuze werkgever met een groot aanzien op Low Code projecten. De sfeer is echter niet veranderd, er heerst een informele sfeer met een open deuren beleid, en hierin mag de eigen bar natuurlijk niet ontbreken. Momenteel maakt deze organisatie een flinke groei door en hier kan jij natuurlijk niet bij ontbreken. Daarom ben ik op zoek naar Low Code Developers met een degelijke technische achtergrond. Kennis

Bekijk vacature »

Software Developer

Dit ga je doen Ontwikkelen aan de software dat beschikbaar is op de substations; Ontwikkelen in C++, C, Python en JavaScript. Daarnaast op een Embedded Linux omgeving, opgebouwd met containers en DevOps; Meewerken aan cyber security (OWASP); Uitvoeren/bouwen van geautomatiseerde testen in samenwerking met de Quality Specialist; Vertalen van wensen van de klanten/business naar werkbare/duurzame oplossingen. Hier ga je werken Als Software Ontwikkelaar kom je te werken bij een organisatie gericht op de (internationale) energiemarkt, waar wordt gewerkt voor het verwerven en verwerken van realtime, high quality data. Er wordt gewerkt vanuit het hart van de substations en direct voor

Bekijk vacature »

SQL developer

Functieomschrijving Voor een erkende werkgever in de omgeving van Tilburg zijn wij op zoek naar een ervaren SQL ontwikkelaar. Hier wordt jij mede verantwoordelijk voor zowel de design en implementatie van SQL-databases als voor het verstaan van de processen van klanten naar het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt er als volgt uit te zien: Het ontwerpen en implementeren van databaseschema's: Je bent in staat om een database te ontwerpen en de structuur van tabellen, relaties, indexen en andere objecten te definiëren; Het schrijven van complexe SQL-query's: Je kunt complexe query's schrijven om gegevens uit de database

Bekijk vacature »

Team Lead/ Lead developer gezocht (Hands-on, PHP,

Functie Als Team Lead ben je de leider van één van de ontwikkelteams binnen de organisatie. Je leidt als lead developer een goed draaiend team dat werkt aan complexe en duurzame applicaties en API’s. Vanuit je kennis en ervaring ben je in staat het grote plaatje te blijven overzien, en kritisch mee te denken over bijvoorbeeld de architectuur, maar ook de algehele aanpak binnen het project. Je laat je team niet alleen technisch goed functioneren maar ben ook betrokken bij het menselijke aspect. Zo weet jij je collega’s te motiveren en begeleiden in hun dagelijkse werk. Buiten het team ben

Bekijk vacature »

Senior Javascript developer

Functie Het platform is gebouwd in een moderne JavaScript stack, die gebruikt maakt van:  React.js  Redux  TypeScript  Node.js  Google Cloud functions (node.js)  Semantic UI Alle code wordt getest en beoordeeld door collega developers. De continuous integration pipeline maakt het mogelijk om elke dag waarde te leveren aan hun klanten. Het ontwikkelproces is pragmatisch en gebaseerd op Scrum. Wat je zult doen: Ten eerste kun je nadrukkelijk jouw eigen stempel drukken op de technologie, het product en de cultuur van het bedrijf. Je bent bezig met het uitwerken van de architectuur van nieuwe functionaliteiten op

Bekijk vacature »

Web Application Developer

Dit ga je doen Samen met het team werk je aan de visualisatie functionaliteiten en hoe dit gebruikt kan worden in een operationele setting; Het ontwerpen, ontwikkelen, onderhouden en leveren van support betreft het Warehouse Management Systeem en de bijbehorende web visualisaties; Je gebruikt hierbijde tools WebGL en ASP.net; Het meewerken in implementatieprojecten; Het leveren van Go-Live Support; Sparren met jouw Amerikaanse collega's. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Web Application Developer. Ze zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van

Bekijk vacature »

C#.NET Developer

Functieomschrijving We are looking for a dutch native speaker In deze uitdagende functie ga je werken als onderdeel van het development team, in de functie van C#.NET Developer, Je gaat maatwerk software bouwen voor diverse klanten. Ook optimaliseer je bestaande software en bouw je API koppelingen. Je bent vooral met back-end development bezig. Je krijgt veel vrijheid in deze functie en je krijgt de kans om mee te denken in bedrijfsprocessen. Deels thuiswerken is geen enkel probleem! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van

Bekijk vacature »

Junior Software developer

Functie Als junior .NET ontwikkelaar start jij in een compact team met drie ervaren .NET ontwikkelaars. Wij werken op projectbasis en begeleiden zelf het hele traject van A tot Z. Wij bieden jou dan ook een brede functie aan met veel technische uitdaging! Ons traject ziet er als volgt uit: 1) Wij analyseren de behoefte van onze klant 2) Wij werken de behoefte uit en vertalen dit naar technische werkzaamheden en maken een uren/kosten schatting; 3) Wij gaan aan de slag met het ontwikkelen van het product met directe feedback van de klant, zodat datgene gerealiseerd wordt, wat gewenst is;

Bekijk vacature »

Senior Java Ontwikkelaar

Dit ga je doen Werken aan uiteenlopende interne projecten voor grote (internationale) organisaties; Ontwikkelen van diverse (web)applicaties en platformen met technieken als Java, Azure en ASP.NET; Complexe vraagstukken tackelen met jouw expertise en ervaring; Waar nodig help jij je collega's om samen tot de juiste oplossing te komen. Hier ga je werken Als Java Developer kom je te werken bij een internationale organisatie in regio Amsterdam die zich richt op procesoptimalisatie door middel van zeer complexe IT oplossingen. Dit doen zij op het allerhoogste niveau met vestigingen over heel de wereld en met een groot aantal aansprekende, maatschappelijk betrokken klanten.

Bekijk vacature »

Back-end Developer Java

Dit ga je doen Het (door)ontwikkelen van een zelfgebouwde applicatie in Java, Spring Framework, SQL, HTML, CSS en Javascript; End-to-end beheer m.b.t. de applicatie en koppelen van applicaties binnen het landschap; Ontwikkelen van rapportages voor de interne organisatie; Ontwikkelen van aanvullende functionaliteiten m.b.t. de applicatie; Uitvoeren van testen en code reviews. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die medische gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen en verbeteren van de kwaliteit van de zorg in heel Nederland.

Bekijk vacature »

Senior C# Software Ontwikkelaar te Zaandam

Bedrijfsomschrijving Deze werkgever heeft als missie om haar klanten op ICT-gebied volledig te ontzorgen. Ze zijn een ICT bedrijf met een verscheidenheid aan ICT oplossingen waaronder Cloud oplossingen en een groot deel van het werk is gericht op software realisatie. Voor de Enterprise-klanten voert het relatief kleine ontwikkelteam waar jij deel uit van kan gaan maken binnen deze organisatie te Zaandam de grootste opdrachten uit. Niet alleen websites en complexe webapplicaties maar ook mobile apps, web services en complete systeemintegraties! Je moet dan denken aan Dynamics, Sharepoint en Salesforce. Je komt hier terecht in een relatief kleine organisatie met ontzettend

Bekijk vacature »
Roy B

Roy B

29/03/2014 18:12:18
Quote Anchor link
Ik ben bezig met het bouwen van een eigen MVC. Nu heb ik een URL /user/edit/2, waarin user de controller is, edit de method en 2 de property of in dit geval het id van de user die we gaan wijzigen. Stel ik heb een URL /news/view/6, waarvan news de controller is, view de method en 6 de id van het nieuwsitem dat we willen laten zien. Hoe kan ik er dan voor zorgen dat de nette URL wordt /nieuws/titel-van-het-nieuwsitem?
 
PHP hulp

PHP hulp

28/12/2024 21:58:47
 
Wouter J

Wouter J

29/03/2014 20:10:04
Quote Anchor link
Je moet afstappen van het idee dat een URL (route) naar een controller, method en argument mapt. Dat is een erg verouderd idee.

Tegenwoordig gebruikt men Routing configuratie bestanden. Op die manier kun je je URL (route) compleet anders doen dan je controller. Een voorbeeldje van Symfony2:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
blog_show:
    path: /nieuws/{slug}
    defaults: { _controller: AcmeBlogBundle:Blog:showOne }

Dit stelt in dat de url /nieuws/{slug} ({slug} is hier een placeholder, het krijgt de waarde van wat er op die plek in de URL staat) wordt afgehandeld door de Acme\BlogBundle\Controller\BlogController#showOneAction controller. Deze controller heeft dan een parameter die $slug heet, die krijgt dan automatisch de waarde van {slug} in de URL.
 
Roy B

Roy B

31/03/2014 08:58:59
Quote Anchor link
Kun je misschien een voorbeeldje geven?
Ik begrijp je nog niet helemaal.
 
Wouter J

Wouter J

31/03/2014 12:20:35
Quote Anchor link
Ik heb je een voorbeeld gegeven :) Wat begrijp je er dan niet aan, dan kunnen we wat doelgerichter uitleggen. Ik bedoel, ik kan je wel het complete Routing systeem van Symfony of Laravel gaan uitleggen, maar dan begrijp je denk ik nog minder...
 
Frank Nietbelangrijk

Frank Nietbelangrijk

31/03/2014 13:34:14
Quote Anchor link
blog_show: is een identifier. (zie het maar als de key value van een array)
Path is het gedeelte in de url achter de domeinnaam waarbij {slug} variabel is. In Wouter zijn voorbeeld de slug (Titel in URL geldige karakters) van een nieuwsartikel.

Mogelijke url's zijn dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
http://jouwdomijn.nl/nieuws/client-fingerprint
http://jouwdomijn.nl/nieuws/ideen-project-website
http://jouwdomijn.nl/nieuws/mvc-friendly-urls
....



Dan zie je de controller die aangeroepen wordt waarbij het eerste gedeelte naar een Bundle (directory / gedeelte) wijst. het tweede gedeelte is de naam van de controller. (Blog wordt class BlogController) en de derde is de action ofwel de functie die aangeroepen wordt van de class.

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
<?php

namespace Acme\BlogBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class BlogController extends Controller
{
    public function indexAction()
    {

    // ....
    }
    
    public function showOneAction($slug)
    {

        $item = $this->getDoctrine()
        ->
getRepository('AcmeBlogBundle:Newsitem')
        ->
findOneBy(array('slug' => $slug));
        
        $data = array(
            'newsitem' => $item,
        );


        return $this->render('BlogBundle:Blog:showOne.html.twig', $data);
    }
}

?>
Gewijzigd op 31/03/2014 13:38:20 door Frank Nietbelangrijk
 
Roy B

Roy B

31/03/2014 18:58:26
Quote Anchor link
Aah oke, ik begin het een beetje te begrijpen. Met een Routing class kan ik dus bepalen welke controller bij welke URL hoort? Hoe ziet zo'n Routing configuratie er dan uit?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/04/2014 18:38:58
Quote Anchor link
Wouter zijn voorbeeld is de router configuratie voor één route/url. Normaal staan er verschillende onder elkaar of worden er andere bestanden included. Wouter zijn voorbeeld is geschreven in het YAML formaat. Er zijn ook andere formaten in omloop zoals XML of JSON. als je het eenvoudig wilt houden kun je ook gewoon een array maken van routes.

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
<?php

$routes
= array(
    'blog_show' => array(
        'path' => '/nieuws/{slug}',
        'controller' => 'AcmeBlogBundle:Blog:showOne',
        'methods' => 'GET|POST',
    ),

    'blog_list' => array(
        'path' => '/nieuws',
        'controller' => 'AcmeBlogBundle:Blog:index',
        'methods' => 'GET',
    ),
);


?>
 
Roy B

Roy B

01/04/2014 20:02:17
Quote Anchor link
En stel ik houdt het eenvoudig en maak gebruik van een simpele array, hoe pas ik deze dan toe? Stel mijn route is /nieuws/titel-van-het-nieuwsitem en ik wil ik de Newsitem controller aanroepen. Iets meer uitleg graag :)
Gewijzigd op 01/04/2014 20:02:39 door Roy B
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/04/2014 21:18:57
Quote Anchor link
JIP EN JANNEKE TAAL EN DIT VOORBEELD IS NOG NIET COMPLEET:

1. Haal informatie uit $_SERVER en herleid het gedeelte achter de naam van de frontcontroler
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
www.mijndomein.nl/controller.php/nieuws/titel-van-het-nieuwsitem

moet worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
nieuws/titel-van-het-nieuwsitem


2. explode het resultaat op de '/'. Je krijgt dan een array:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
array(
    0 => 'nieuws',
    1 => 'titel-van-het-nieuwsitem'
)


3. nu ga je met een foreach stap voor stap alle routes af. die explode je ook op dezelfde manier.
Daarna laat je voor iedere route een vergelijkfunctie aanroepen die de arrays gaat vergelijken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
foreach($routes as $route)
{

    $routeArray = explode('/', $route['path']);
    
    if($this->compare($routeArray , $urlArray))
    {

        return $route;
    }


    return false;
}

?>

4. de vergelijkfunctie:
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
<?php
public function compare($routeArray , $urlArray)
{

    // als eerste als de arrays geen gelijk aantal elementen hebben dan is er iig geen match
    if(count($routeArray) != count($urlArray)
        return false;

    // daarna vergelijken we element voor element uit beiden arrays. bij een variabele ( {slug} ) is er altijd een match
    for($i = 0 ; $i < count($routeArray) ; $i++)
        if($routeArray[$i] != $urlArray[$i] && $routeArray[$i][0] != '{')
            return false;
    
    return true;
}

?>


5. als er dan een geldige route gevonden is kun je $route['controller'] uitlezen en de juiste controller aanroepen. Dit gebeurt in een paar stappen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
1. variabelen uit de URL halen: $var[] = 'titel-van-het-nieuwsitem'; // in werkelijkheid heb je hier ook een functie voor nodig
2. BlogController.php includen. (Liefst met een autoloader)
3. BlogContoller class instantiren: $controller = new BlogController();
4. de juiste method aanroepen: $controller->showOneAction($var[0]);


Toevoeging op 01/04/2014 21:32:53:

Zoals je zult merken is het al bij al nog niet zo eenvoudig. Zoals vaker wordt opgemerkt op dit board:
Ga liever gewoon aan de slag met een goed framework als Symfony of Zend.

Neemt niet weg dat het maken van een eigen framework erg leerzaam is en je ook helpt bij het begrijpen wat een framework doet. Maar een echt serieus project begin je pas met Symfony of Zend naar mijn mening.
Gewijzigd op 01/04/2014 21:20:42 door Frank Nietbelangrijk
 
Wouter J

Wouter J

01/04/2014 22:15:58
Quote Anchor link
Het is sowieso altijd goed om met een framework te beginnen. Of je dan daarna je eigen framework gaat maken maakt mij niet zoveel uit, maar je hebt nu nog niet eens door wat een framework hoort te doen en je bent nog niet thuis in de begrippen en -veel belangrijker- OO principes. Leer eerst goed hoe alles werkt van een framework (kan ook Laravel zijn, die komt waarschijnlijk dichter bij je toekomstige framework in de buurt) en ga dan pas nadenken over het zelf beginnen.
 



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.