I'm trying to set up routes, but I'm missing something somewhere.

Here's my module.config.php file:
PHP Code:
<?php
return array(
    
'controllers' => array(
        
'invokables' => array(
            
'Stock\Controller\Stock' => 'Stock\Controller\StockController',
            
'Stock\Controller\Media' => 'Stock\Controller\MediaController',
        ),
    ),
    
'router' => array(
        
'routes' => array(
            
'stock' => array(
                
'type'    => 'segment',
                
'options' => array(
                    
'route'    => '/stock[/][:model][/:id]',
                    
'constraints' => array(
                        
'model' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        
'id'    => '[0-9]*',
                    ),
                    
'defaults' => array(
                        
'controller' => 'Stock\Controller\Stock',
                        
'action'     => 'index',
                    ),
                ),
            ),
            
'media' => array(
                
'type'    => 'segment',
                
'options' => array(
                    
'route'       => '/stock/media[/:action]',
                    
'constraints' => array(
                        
'action'          => '[a-zA-Z0-9]*',
                    ),
                    
'defaults' => array(
                        
'controller' => 'Stock\Controller\Media',
                        
'action'     => 'index',
                    ),
                ),
            ),
        ),
    ),
    
'view_manager' => array(
        
'template_path_stack' => array(
            
'orders' => __DIR__ '/../view',
        ),
    ),
);
And my StockController.php file:
PHP Code:
private $apiRoutes = array(
        
'categories'     => 'catalog/category',
        
'certificates'     => 'catalog/certificate',
        
'colours'         => 'catalog/color',
        
'departments'     => 'catalog/department',
        
'designs'         => 'catalog/design',
        
'discounts'     => 'sales/discount',
        
'locations'     => 'catalog/location',
        
'materials'     => 'catalog/material',
        
'patterns'         => 'catalog/pattern',
        
'products'         => 'catalog/product',
        
'ranges'         => 'catalog/range',
        
'suppliers'     => 'catalog/supplier' 
    
);

public function 
indexAction()
{

    
$model $this->params()->fromRoute('model') ? $this->params()->fromRoute('model') : 'index';

    
$modelForm 'Stock\Form\\' ucfirst($model) . 'Form';

    
$form = new $modelForm();
    
$API = new Application();

    
$itemId $this->params()->fromRoute('id') ? $this->params()->fromRoute('id') : null;

    
$dataObj $API->get($this->apiRoutes[$model]);

        
var_dump($dataObj); //outputs $dataObj here, so this method is being called successfully

    
foreach($dataObj as $data){

        
$vars get_object_vars($data);

        if(
$data->{key($vars)} == $itemId){
            
$form->setData($vars);
        }
    }

    
$formControllerResponse $this->validate($form);

    if(
$formControllerResponse->valid){
        
//update database
    
}

    
$view = new ViewModel(array('form' => $form'dataObj' => $dataObj'itemId' => $itemId));
    
$view->setTemplate("stock/stock/$model"); //file zend/module/Stock/view/stock/stock/colours.phtml exists

    
return $view
}

public function 
validate($form)
{
    
//handle for validation etc...

If I navigate to /stock/colours for example I get the following Zend\Mvc\Router\Exception\RuntimeException:

Route with name "colours" not found


If I add a 'colours' route to my module.config.php file, something like:
PHP Code:
<?php
return array(
    
'controllers' => array(
        
'invokables' => array(
            
'Stock\Controller\Stock' => 'Stock\Controller\StockController',
            
'Stock\Controller\Media' => 'Stock\Controller\MediaController',
        ),
    ),
    
'router' => array(
        
'routes' => array(
            
'stock' => array(
                ...
            ),
            
'media' => array(
                ...
            ),
[
B]        'colours' => array(
                ...
            ),[/
B]
        ),
    ),
    
'view_manager' => array(
        
'template_path_stack' => array(
            
'orders' => __DIR__ '/../view',
        ),
    ),
);
It works fine, but I don't want to do that, because essentially everything's the same, its just the view template needs to change every time.

Can anyone see what I'm missing...?

Thanks in advance,
Mike