Установите параметр URL в перенаправлении в zend framework v2

У меня есть следующий скрипт перенаправления в моем контроллере (Zend Framework 2)

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

В настоящее время перенаправление на localhost/zf2/public/admin/index

Как я могу перенаправить с дополнительным параметром?

Нравиться:

localhost/zf2/public/admin/index/update/1

or localhost/zf2/public/admin/index/page/2

Я пробовал это:

return $this->redirect()->toRoute('default', array(
                        'controller' => 'admin',
                        'action' =>  'index'
                            'param' => 'updated/1'
                        ));

Но перенаправляется на localhost/ttacounting/public/admin/index/updated%2F1


person Sina Miandashti    schedule 18.05.2012    source источник


Ответы (6)


Это рабочий пример. Скрипт маршрута

$this->redirect()->toRoute('myaccount', array(
    'controller' => 'admin',
    'action' =>  'index',
    'param1' =>'updated',
    'param2'=>'1'
));

Затем, установив параметр в module.config.php

'myaccount' => array(
    'type' => 'Segment',
    'options' => array(
    'route'    => '/myaccount[/:action][/:param1][/:param2]',
    'defaults' => array(
            'controller' => 'Main\Controller\MyAccount',
            'action'     => 'index',
        ),
    ),
),

Это приведет вас к MyAccountController, indexAction с param1='updated' и param2='1'. Но в вашем примере действие должно быть обновлено с именем параметра «обновление» и значением параметра «1».

person Rid Zeal    schedule 06.10.2013
comment
Это работает. Однако я хотел бы отметить, что вам не нужно указывать контроллер в массиве. Маршрут, который вы настраиваете в module.config.php, делает это за вас. Вам нужно только действие и правильные параметры. - person spetz83; 18.06.2014

Это работает для меня.

Маршрут:

'user_view' => array(
    'type'    => 'Segment',
    'options' => array(
        'route' => '/user/view[/:user_id]',
        'defaults' => array(
            'controller' => 'user',
            'action'     => 'viewUser',
        ),
    ),
), // End of user_view route

И редирект с контроллера:

return $this->redirect()->toRoute('user_view', array('user_id'=>$user_id));

Обратите внимание, что ключ Array в операторе перенаправления соответствует сегменту маршрута: [/:user_id] = 'user_id'=>$user_id

person michaelbn    schedule 19.05.2012
comment
Спасибо большое сегодня проверю - person Sina Miandashti; 20.05.2012

Другой способ — передать его в качестве третьего параметра (проверено на ZF3) вместо обновления маршрута:

$this->redirect()->toRoute('dashboard', [], ['query' => ['welcome' => 1]]);
person Andron    schedule 16.11.2016

Этот оператор перенаправляет вас на localhost/leads/edit/112345:

return $this->redirect()->toRoute('leads', array(
                'action' => 'edit',
                'id' => 112345
            ));

id - это параметр, который я ожидаю в editAction.

Надеюсь, поможет.

person corl    schedule 14.11.2012

Я пробовал некоторые из приведенных выше решений, но ни одно из них не работало для меня. Я пришел со следующим.

//Return to specific product pricing 
return $this->redirect()->toRoute('showpricing', array('id' => $form_values['id']));


  /* show pricing */
          'showpricing' => array(
              'type' => 'Zend\Mvc\Router\Http\Segment',
              'options' => array(
                  'route'   => '/product/showpricing[?id=:id]',
                  'defaults' => array(
                      'controller' => 'Product\Controller\Product',
                      'action'     => 'showpricing',
                  )
              )
          ),

Надеюсь, это поможет кому-то.

person kta    schedule 31.10.2014

Попробуйте этот маршрут вместо предыдущего

return $this->redirect()->toRoute('default', [
    'controller' => 'admin',
    'action' =>  'index'
    'updated' => '1'
]);
person Meeran    schedule 18.05.2013