I am using ZF2 Skeleton app.
To create a new controller in a existing Module, I modified the module.config.php file like this:
<?php
return array(
'controllers' => array(
'invokables' => array(
'Album\Controller\Album' => 'Album\Controller\AlbumController', // WORKING FINE
'Album\Controller\Photo' => 'Album\Controller\PhotoController', // I ADDED THIS
),
),
// The following section Was PREVIOUSLY THERE
'router' => array(
'routes' => array(
'album' => array(
'type' => 'segment',
'options' => array(
'route' => '/album[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Album\Controller\Album',
'action' => 'index',
),
),
),
),
),
// ADDED THIS FOR NEW CONTROLLER 'PhotoController.php' in same Namespace 'Album'
'router' => array(
'routes' => array(
'photo' => array(
'type' => 'segment',
'options' => array(
'route' => '/photo[/:action][/:id]',
'constraints' => array(
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id' => '[0-9]+',
),
'defaults' => array(
'controller' => 'Album\Controller\Photo',
'action' => 'index',
),
),
),
),
),
'view_manager' => array(
'template_path_stack' => array(
'album' => __DIR__ . '/../view',
),
),
);`
This link (http://domainname.com/dummy/zend/zf2-tutorial/public/photo/index) is working as expected.
This link (http://domainname.com/dummy/zend/zf2-tutorial/public/album/index) is not working and showing the following errors:
A 404 error occurred Page not found.
The requested URL could not be matched by routing.
The problem is you're declaring
router
in your config twice, the second one overwrites the first, so only the second route is used.Your config file should look something like this with both routes inside the same
router
declaration