2012-12-04 266 views
1

在我看來,我有以下鏈接:鏈路和路由問題

<?php echo $this->Html->link($article['Article']['title'], array('category' => $article['Page']['Category']['directory'], 'page' => $article['Article']['page_id'], $article['Article']['id'])); ?> 

我期望的鏈接輸出:http://example.com/shows/3/articles/6

我的路線是這樣的:

Router::connect(
    '/:category/:page/:controller/:id', 
    array('action' => 'view'), 
    array(
     'pass' => array('id'), 
     'page' => '[0-9]+', 
     'id' => '[0-9]+', 
     'category' => 'shows|music|games|books|hobbies', 
    ) 
); 

而是我的鏈接返回這樣的:http://example.com/articles/6/category:shows/page:3

如何在不使用絕對URL的情況下正確顯示此信息?這是我的路由,查看,鏈接HTML助手還是3個組合的問題?我認爲問題在於鏈接助手如何解析URL,但我不知道如何更改。

如果手動輸入我的瀏覽器的網址http://example.com/shows/3/articles/16,將顯示正確的頁面。

我看着命名參數,但似乎並沒有達到我想要的。

回答

0

您需要在您的pass中包含所有參數。

所以你的路線應該是什麼樣子,

Router::connect(
    '/:category/:page/:controller/:id', 
    array('action' => 'view'), 
    array(
     'pass' => array('category','page','id'), // added all passed params here 
     'category' => 'shows|music|games|books|hobbies' 
     'page' => '[0-9]+', 
     'id' => '[0-9]+' 
     // Just re-ordered to match your route ;) 
    ) 
);