Zend2 - url nie generuje i nie przekierowuje poprawnie

0

Hej,
Mam problem z przekierowaniami w zend framework. Nieważne czy robię je w kontrolerze czy w widoku zawsze przekierowuje mnie do modułu ignorując kontroler i akcję, np:

echo $this->url('users', array('controller' => 'index', 'action' => 'register')); 

Generuje link /users natomiast oczekiwał bym /users/index/register w tym przypadku. jeżeli zrobię w kontrolerze:

return $this->redirect()->toRoute('users', array('controller' => 'index', 'action' => 'register'));

to przekierowanie wystepuje ale tylko do adresu /users a oczekiwałbym /users/index/register.

Ponizej mój routing

'users' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/users',
                    'defaults' => array(
                        '__NAMESPACE__' => 'Users\Controller',
                        'controller'    => 'Index',
                        'action'        => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type'    => 'Segment',
                        'options' => array(
                            'route'    => '/[:controller]/[:action]',
                            'constraints' => array(
                                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                            ),
                            'defaults' => array(
                            ),
                        ),
                    ),
                ),
            ),
 
0

Masz może jeszcze jakiś routing w aplikacji?

0

Mam routing dla aplikacji, wyglada identycznie tylko odwołuje się do modułu 'application' i jeszcze moduł produkty:

'produkty' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/produkty',
                    'defaults' => array(
                        '__NAMESPACE__' => 'Produkty\Controller',
                        'controller'    => 'Produkty',
                        'action'        => 'index',
                    ),
                ),
                'may_terminate' => true,
                'child_routes' => array(
                    'default' => array(
                        'type'    => 'Segment',
                        'options' => array(
                            'route'    => '/[:parameter]',
                            'constraints' => array(
                                'controller' => '[a-zA-Z][a-zA-Z0-9,_-]*',
                                'action'     => '[a-zA-Z][a-zA-Z0-9,_-]*',
                            ),
                            'defaults' => array(
                            ),
                        ),
                    ),
                ),
            ),
1

Dany routing w ZF2 powinien odnosić się do konkretnego kontrolera. Po co robić literal na users? Spróbuj zrobić segment i wskaż mu domyślny kontroler i akcje:

'routes' => array(
            
            'users' => array(
                'type'    => 'segment',
                'options' => array(
                    'route'    => '/users[/:action]',
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',                       
                    ),
                    'defaults' => array(
                        'controller' => 'Users\Controller\Users',
                        'action'     => 'index',
                    ),
                ),
            ),          
           ),
            
 

Do takiego routingu w widoku odwołujesz się w sposób:

$this->url("users", array("action"=>"register"));
0

Dzięki kalar, faktycznie to było problemem, po zostawieniu tylko Segmentów trybi jak należy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1