2011-08-11 83 views
1

我正在一個小型項目 - 網站上工作。有畫廊,用戶登錄,商店和許多小文本部分 - 與圖像和沒有。 我想讓例如漂亮網址:CakePHP:路由和靜態頁面

Gallery -> /eng/gallery (GalleryController::index) 
Gallery album /eng/gallery/album_name_slug (GalleryController::view) 
Shop -> /eng/products (ProductsController::index) 
Shop one product -> /eng/products/product_name_slug (ProductsController::view) 

和所有其他(文字)頁面變爲「PagesController」,但沒有/網頁/視圖前綴

Contacts -> /eng/contacts 
About us -> /eng/about_us 

我認爲我可以讓這樣的事情:

// Homepage 
Router::connect('/', array('controller' => 'homepage', 'action' => 'display')); 

/* There delegate routes for each controller/method (gallery, shop, etc) */ 

// All what is not in thease controllers/methods goes to pagescontroller 
Router::connect('/*', array('controller' => 'pages', 'action' => 'view')); 

什麼是最好的方式使它在routes.php?也許你可以舉一些通用的例子?

謝謝!

+0

我不你的路線看不到任何錯誤。什麼不工作? –

+0

我想知道有沒有可能性,爲了得到這個工作,不委託所有功能(產品/畫廊)的路線,只有抓住所有? – Orbitum

+0

你是什麼意思「委託所有功能路線」? –

回答

0

對於廊 - >/eng/gallery(GalleryController ::指數):

Router::connect('/eng/gallery', 
    array('controller' => 'gallery', 'action' => 'index')); 

對於廊專輯/eng/gallery/album_name_slug(GalleryController ::視圖):

Router::connect('/eng/gallery/:album', 
    array('controller' => 'gallery', 'action' => 'view'), 
    array('pass' => array('album'),'album' => '[0-9a-zA-Z]+') 
); 

重複用於產品控制器

+0

默認情況下沒有可能使用控制器和方法,只有當沒有這樣的控制器/方法才能進入頁面控制器時?我正在尋找DRY解決方案。當然,如果沒有這樣的話,我會接受你的回答! – Orbitum

+0

我的catchall包含以下內容: Router :: connect('/ *',array('controller'=>'pages','action'=>'display')); – minaz