Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ZF2] Routes worden niet gezien

Pagina: 1
Acties:

  • pin_point
  • Registratie: April 2005
  • Laatst online: 21-11 18:30
Goedemorgen,

Momenteel ben ik bezig met een applicatie icm Zend Framework, moet er bij vermelden dat het voor mij het eerste framework is wat ik gebruik (hiervoor altijd rechtoe rechtaan, echter het project waar we nu mee bezig zijn heeft een gedegen fundering nodig.).

Anyhoe; wanneer ik naar /user navigeer krijg ik een keurig overzicht te zien van de op dat moment ingelogde gebruiker en de informatie welke ik uit de database heb gehaald.

Wanneer ik in de view waar ik dit overzicht genereer;
echo $this->url( 'user/edit/' );
vervang voor
echo $this->url( 'user/edit/' . $uid );

Begrijpt de router niet meer waar deze heen moet, de foutmelding welke ik krijg:
Uncaught exception 'Zend\Mvc\Router\Exception\RuntimeException' with message 'Route with name "user" does not have child routes'

De route welke niet werkt heb ik overgenomen van de 'Album' module welke ook in de tutorial van Zend gebruikt wordt, deze heb ik ook nog draaien en werkt verder naar behoren daarom vindt ik het ook zo vreemd dat deze het niet doet in de Core module aangezien alleen de naam welke in de URL wordt aangeroepen gewijzigd is.

Uiteraard heb ik al het e.e.a. gezocht ook wel iets met een wildcard route kunnen vinden maar nog geen oplossing kunnen vinden welke ik kan aanpassen naar mijn situatie (of ik begrijp nog niet hoe 't er ingezet moet worden), ook verwacht ik niet dat een oplossing mij zomaar voorgekouwd wordt ik wil tenslotte ook zelf er nog iets van opsteken.

Wanneer er meer informatie nodig is hoor ik het graag.

Werkende situatie:
PHP:
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
/*module\core\config\module.config.php*/

    'router' => array(
        'routes' => array(
            'user' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/user',
                    'defaults' => array(
                        '__NAMESPACE__' => 'Core\Controller',
                        'controller'    => 'User',
                        'action'        => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type' => 'Zend\Mvc\Router\Http\Literal',
                        'options' => array(
                            'route'    => '/',
                            'defaults' => array(
                                'controller' => 'Core\Controller\User',
                                'action'     => 'index',
                            ),
                        ),
                    ),
                    'edit' => array(
                        'type' => 'Zend\Mvc\Router\Http\Literal',
                        'options' =>array(
                            'route' => '/edit',
                            'defaults' => array(
                                'controller' => 'Core\Controller\User',
                                'action' => 'edit'
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),

/* index.phtml */
echo $this->url( 'user/edit' );


Niet werkende situatie:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*module\core\config\module.config.php*/

    'router' => array(
        'routes' => array(
            'user' => array(
                'type' => 'segment',
                'options' => array(
                    'route' => '/user[/:action][/:id]',
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'id' => '[0-9]+',
                    ),
                    'defaults' => array(
                        'controller' => 'Core\Controller\User',
                        'action' => 'index',
                    ),
                ),
            ),
        ),
    ),


/* index.phtml */
echo $this->url( 'user/edit/1' );

  • kokx
  • Registratie: Augustus 2006
  • Laatst online: 18-11 12:58

kokx

WIN

Weet je zeker dat je module wordt ingeladen? Je moet modules wel toevoegen in je application.config.php.

Edit: Oops, niet goed gelezen.

Maar met routes werkt het iets anders met de URL helper. Die gebruik je op een andere wijze.

Je heb hier parameters, welke je op de volgende manier specificeert:

PHP:
1
2
3
4
5
<?php
echo $this->url('user', array(
    'action' => 'edit',
    'id' => 1
));


Zie ook: http://framework.zend.com...end.view.helpers.url.html

[ Voor 68% gewijzigd door kokx op 03-04-2014 14:13 ]


  • pin_point
  • Registratie: April 2005
  • Laatst online: 21-11 18:30
Ja! nu werkt hij weer, stom dat dit me niet direct opgevallen was, staat nog wel op dezelfde manier uitgelegd in de album tutorial.