2016-04-27 22 views
9

Khi người dùng truy cập domain/page, tôi cần định tuyến chúng đến controller/action/100. Tôi không muốn chuyển bất kỳ thông số nào thông qua URL, nhưng muốn thêm thông số đó vào các quy tắc url.yii2 định tuyến - thông số truyền để định tuyến trong các quy tắc

Tôi đã thêm mã bên dưới vào tệp cấu hình của mình.

'urlManager' => [ 
    'rules' => [ 
     'login' => 'site/login', // working 
     'about' => 'cms/page/10' // Not Working 
     'about' => 'cms/page?id=10' // Not Working 
    ], 
], 

Quy tắc đầu tiên hoạt động tốt.

Tôi có thể chuyển tham số cho tuyến đường trong quy tắc url không?

Trả lời

7

Bạn cần phải sử dụng defaults và tuyên bố các quy tắc rõ ràng:

'urlManager' => [    
    'rules' => [ 
     'login' => 'site/login', 
     [ 
      'pattern' => 'about', 
      'route' => 'cms/page', 
      'defaults' => ['id' => 10], 
     ] 
    ], 
], 

Thêm 'mode' => \yii\web\UrlRule::PARSING_ONLY cho quy tắc này nếu bạn muốn ngăn chặn việc chuyển đổi khi bạn tạo một URL với UrlManager (ví dụ Url::to() sử dụng UrlManager và nó quy tắc và hoạt động theo hướng ngược lại, tức là Url::to(['cms/page', 'id' => 10]) sẽ tạo liên kết about)

Đồng thời, hãy xem xét định cấu hình chuyển hướng tại máy chủ web của bạn.

+0

cảm ơn bạn đã cướp công việc của mình – suneeth

Các vấn đề liên quan