2012-05-18 28 views
12

tôi đã chuyển hướng sau kịch bản trong điều khiển của tôi (Zend Framework 2)Set tham số url trong chuyển hướng trong Zend Framework v2

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

Hiện nay chuyển hướng đến localhost/zf2/public/admin/index

Làm thế nào tôi có thể chuyển hướng với một tham số phụ?

Giống như:

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

hoặc localhost/zf2/public/admin/index/page/2

Tôi đã thử này:

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

Nhưng được chuyển hướng đến localhost/ttacounting/public/admin/index/updated%2F1

Trả lời

18

Cái này đang làm việc của bạn. Kịch bản đường

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

Sau đó, thiết lập các tham số trong module.config.php

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

này sẽ đưa bạn đến MyAccountController, indexAction với param1 = 'cập nhật' và param2 = '1'. Nhưng trong trường hợp mẫu của bạn, hành động phải được cập nhật với tên thông số 'cập nhật' và giá trị tham số '1'

+0

này hoạt động. Tuy nhiên, tôi sẽ lưu ý rằng bạn không cần phải chỉ định bộ điều khiển trong mảng. Tuyến đường mà bạn thiết lập trong module.config.php thực hiện điều này cho bạn. Bạn chỉ cần hành động và thông số chính xác. – spetz83

8

này làm việc cho tôi.

Tuyến:

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

Và Redirect từ bộ điều khiển:

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

Chú ý rằng chìa khóa Array trong báo cáo kết quả chuyển hướng tương ứng với các phân khúc tuyến đường: [/: user_id] = 'user_id' => $ user_id

+0

Thank you very much im đi để kiểm tra ngày hôm nay –

1

Tuyên bố này chuyển hướng bạn đến localhost/leads/edit/112345:

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

id là thông số tôi mong đợi trong editAction.

Hy vọng điều đó sẽ hữu ích.

0

Hãy thử tuyến đường này thay vì trước đây là một ví dụ

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

Tôi đã thử một số giải pháp ở trên nhưng không có giải pháp nào phù hợp với tôi. Tôi đến với những điều sau đây.

//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', 
       ) 
      ) 
     ), 

Hy vọng điều này sẽ giúp ai đó.

0

Một cách khác là để vượt qua nó như một tham số thứ ba (thử nghiệm trên ZF3), thay vì cập nhật các tuyến đường:

$this->redirect()->toRoute('dashboard', [], ['query' => ['welcome' => 1]]); 
Các vấn đề liên quan